After sleeping on this, I'm wondering if we should instead make it the responsibility of the `Subscription.request` method to be async, rather than requiring the `Subscriber` to dispatch the invocation asynchronously?

It seems more natural for the `request` method to be responsible, as it can either quickly increment a counter if work is already running, or it can schedule on an event loop, thread pool, whatever. 

In short, the scheduling seems more natural for the `Subscription` to handle. This would also simplify `Subscriber` implementations which are more common for users to implement directly.

Would this change in spec work?