When you are in a Domain and you spawn off an async call (like fs.stat), the callhack for that async call gets executed in the domain. With tasks this is the same, so far, nothing new.
However, there is no 'end' to a domain. At some point the Domain object might become unreachable and gets GC'ed. That's all.
Think of a Task as an extension to a domain, namely a domain that has a callback. That callback is called - automatically - in the context of it's parent domain, whenever, by the end of the current tick, we know that the domain will never be entered again.
So the basic strategy to make this work.