大津です。

実現しようとしていることはドメイン内(d)であるクラスのメンバーが実行され
た時において3つあります。
1.そのメンバーはdisposeの影響を受けないようにしたいです。
2.更にメンバーのcallback関数はドメインd内で実行したいです。
3.また必要に応じてドメインd内にエラーをメンバーから投げ入れたいです

上記要件を私なりにまとめると、

「あるオブジェクトメソッドで実行されるスコープ内のドメインを特定のドメイ ンに固定したい」

ということであってますか?

いま、1,2の実現のために手元で以下のようなソースを書いています
https://gist.github.com/3056605

このソースですと、callback関数がClassB内で実行されてしまいます。
また、interceptをcallback関数に付加することも考えましたが、
そうしてもClassB内に用意したドメインのdisposeの影響を受けてしまいます。

期待してる出力結果も書いてもらえるとありがたいです。

現状の出力結果:
This is DOMAIN 1.fnA
This is DOMAIN 2.fnB
This is DOMAIN 2.fnA

期待する出力結果:
This is DOMAIN 1.fnA
This is DOMAIN 2.fnB
This is DOMAIN 1.fnA

で、さっき書いた「特定のドメインに固定する」要件だとすると
文字通り Domain.bind() が使えます。このコードの場合、

a.fnA = d.bind(a.fnA);

で再定義してあげると a.fnA() 内で実行されるスコープのアクティブドメイン は d に固定されます。dB を dispose() しても影響を受けないです。
サンプルコードと出力結果はこれです。

https://gist.github.com/3057252

3. の要件は、必要に応じてメソッドを d にバインドすればいいと思います。

メールによる返信