A consumer should be able to be coded like this:

```java
onNext(t) {
  queue.add(t);
  subscription.request(1);
}
```

The `onNext` here is completely async as it's just queuing the item for later processing and then invokes `request` which is an async call since the `Subscription` itself guarantees it is async. We don't need double scheduling in both the `Consumer` and `Subscription`. Only one of those places need to be async and thus this simplifies the `Consumer` and contract by clearly describing which implementation needs to be async.

Discussion about allowing a consumer to directly invoke `subscription.request` is referenced in these places:

- https://github.com/reactive-streams/reactive-streams/pull/37#discussion_r11957454
- https://github.com/reactive-streams/reactive-streams/pull/37#discussion_r11956787
- https://github.com/reactive-streams/reactive-streams/pull/37#discussion_r11959494
- https://github.com/reactive-streams/reactive-streams/pull/41#issuecomment-41822775
- https://github.com/reactive-streams/reactive-streams/issues/19#issuecomment-41244848
- https://github.com/reactive-streams/reactive-streams/issues/19#issuecomment-41246611