I haven't been able to convince myself that this is correct or completely safe. I'm concerned it's just reducing the time gap to the point that the non-determinism is very hard to trigger.

This should only affect the `create`/`subscribe` boundaries, not intermediate operators using `lift`.

The issue I see is that it triggers the `countDown` right before `f.call(s)` which is the actual `subscribe` step.

We have no idea at that point whether `f.call(s)` is going to be synchronous or async.

The async case should not call before `f.call(s)`, but after ... which do were in `OperatorSubscribeOn` like this:

```java
                        o.subscribe(innerSubscriber);
                        onSubscribeLatch.countDown();
```

This code however will trigger at the origin of the `Observable` right before `OnSubscribe` is invoked. 

Interestingly, both locations need to exist to cover the sync and async flows. Despite having written the code my mind is not fully connecting the dots on this ... hence my apprehension with this code.