Ok, I've had a closer look, the first instance, the sleep is not needed, the thing that I want to check that has happened is actually done synchronously, so I've just removed that sleep.  In the second instance, I'm not sure that it is possible to use a count down latch to guarantee the condition I want to guarantee.  The reason being, we feed in an element, and it's consumed by our iteratee, which if the joined enumerator is not connected to an iteratee, will just buffer it.  Feeding the element into the iteratee is done asynchronously.  We could put an enumeratee between the broadcast enumerator and the iteratee, but this only checks that the element has come out of the enumerator, it still does the asynchronous dispatch to the iteratee, and so doesn't check that it's been handled and buffered by the iteratee.  There is no way for us to inspect the internal state of the iteratee, so there's no way for us to know for sure that it's in there, or if it's still yet to be handled, the only way we can know is to attach an iteratee to the joined enumerator... but this test is specifically testing that the buffering happens correctly before that an iteratee is attached to the joined enumerator.