Domain#bind()がやってること

var d = require('domain').create();
d.on('error', function(e) {
    console.log('handled error: ' + e.message);
});

d.enter(); //やってることは process.domain = d; 
fireError.apply(d, []);
d.exit(); 

function fireError() {
    throw new Error('fire error!');
}

Domain#bind()でやってることの中身を短いサンプルでシュミレーションすると、上記コード中のenter()、apply()、exit()の3行です。enter()でスタックにカレントのドメインを積み上げて関数apply時にこのドメインをコンテキストとして渡しています。そのあとexit()でスタックからカレントドメインを下ろしています。
だから、Domain#enter()とexit()はユーザーアプリレベルでは呼ばれること想定していない作りですね。これらを呼ぶのはDomainの拡張機能を作るみたいなときぐらいなのかな。

ちなみに、Domain#run()は、中でthis.bind(callback)();となっていて、Domain#intercept()は、中でthis.bind(callback, true);です。