Problem: When creating streams inside of a domain, Domain#dispose() will
not clean them up.
This patch demonstrates this problem using a test case, and provides a
possible fix by also adding implicit domain members to the domain.
Considering that I don't understand the design decisions that went into
only tracking explicit members at this point, this patch should be
considered as a request for comment on the current behavior / to start a
discussion on improving it.
There were two problems with the way domains were used in the benchmark:
a) A global domain was created. IMO this is not how one would normally
use domains, as an error caught by a global domain would be just as
difficult to handle as an 'uncaughtException' one. More importantly:
Setting up a global domain makes implicit domain member tracking
expensive as per-request domains will now also be tracked as members of
the global domain.
b) The per-request domains created in the benchmark were never entered.
While it didn't have an impact on the performance of the benchmark, it
does seem a bit pointless to not enter the domains, so this patch causes
them to be entered.