RxJava allows "hot" Observables in a different manner than Reactive Streams so we need to account for this.
In Reactive Streams a Publisher can never emit more than has been requested. An Observable however can choose to just be hot and emit.
See https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=114 and https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=21

This means that when converting from Observable to Reactive Stream Publisher we may have an Observable that does not obey request(n) either because it can't (it's hot) or the Observable just doesn't support it (thus it acts hot even if it is a cold source).
I think this means we need to put in some logic in the bridge that throws MissingBackpressureException if we receive more onNext than are requested so it complies with the RxJava contract and doesn't emit more to the downstream Reactive Stream implementation out of contract.
This would then force a choice of strategy for dealing with this: https://github.com/ReactiveX/RxJava/wiki/Backpressure and https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=89
RxJava allows "hot" Observables in a different manner than Reactive Streams so we need to account for this.
In Reactive Streams a Publisher can never emit more than has been requested. An Observable however can choose to just be hot and emit.
See https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=114 and https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=21
This means that when converting from
Observableto Reactive StreamPublisherwe may have anObservablethat does not obeyrequest(n)either because it can't (it's hot) or theObservablejust doesn't support it (thus it acts hot even if it is a cold source).I think this means we need to put in some logic in the bridge that throws
MissingBackpressureExceptionif we receive moreonNextthan are requested so it complies with the RxJava contract and doesn't emit more to the downstream Reactive Stream implementation out of contract.This would then force a choice of strategy for dealing with this: https://github.com/ReactiveX/RxJava/wiki/Backpressure and https://speakerdeck.com/benjchristensen/reactive-programming-with-rx-at-qconsf-2014?slide=89