The producer must check the capacity on the subscription/subscriber before handing over any onNext. Until Subscription#request is effectively called, the capacity remains null at first. However onSubscribe will probably generate a request(xxx) from the subscriber which will lead to two outcome: nothing is available upstream (Publisher) and then it add to its capacity the requested number. The other alternative is something is available and therefore it signals the Publisher to broadcast its onNext events from its buffer.