process.nextTick()でのDomain対応
https://github.com/joyent/node/blob/master/src/node.js
Node.jsのスタートアップラウンドのコード、その名もnode.js、ですが、こちらにprocess.nextTick()の定義で、特に遅延させた関数のスタックをループで発火させるところとして_tickDomainCallback()というのがあります。
// node.js (v0.10.18) function _tickDomainCallback() { var tock, callback, domain; tickInfo[kInTick] = 1; while (tickInfo[kIndex] < tickInfo[kLength]) { tock = nextTickQueue[tickInfo[kIndex]++]; callback = tock.callback; domain = tock.domain; if (domain) { if (domain._disposed) continue; domain.enter(); // <- これ! } tickInfo[kLastThrew] = 1; try { callback(); tickInfo[kLastThrew] = 0; } finally { if (tickInfo[kLastThrew] === 1) tickDone(); } if (domain) domain.exit(); // <- これ! } tickDone(); }
callback()の前後でがっちりdomain.enter()およびdomain.exit()してますね。