@ystk_skm です。 トラブルの原因がわかりました。
https://gist.github.com/3049876 上記ソースを実行するとログは ---- d0: d0 Timeout d0: ENOENT, open 'aaa' ---- と出力されます。 私の予想は ---- d0: d0 Timeout ---- でした。 誤解の原因は uncaughtException によってその domain は自動的に無効化するであろう と予測していたためです。 実際には domain を dispose してやる必要があるようですね。 ソースのL:14 - L:17を d.on('error', function(err) { clearTimeout(timer); console.log(name + ':', err.message); }); => d.on('error', function(err) { clearTimeout(timer), d.dispose(); console.log(name + ':', err.message); }); とすることで予想通りの結果を得ることが出来ました。 また本体に適用すると疑問が生じるかもしれませんが、とりあえず問題解決出来た気になってます。 大津さん、小林さん、ありがとうございました。 コメントがあれば引き続きよろしくお願いします。 小林さん > ドメインに関連づけられた > コールバック関数や EventEmitter のリスナ関数が > 呼び出される際,そのドメインの enter() が > 呼び出されるので,複数のドメインが存在していても, > 適切なドメインがアクティブになるようになってます. アドバイスありがとうございました。 timerに関して言えば timer.js L:200 (v0.8.1) で timer に processのdomainを記憶させてるんですね。 そして自分が呼び出される時にそのdomainにenterすると。シンプルですね(^^)
