I was thinking more about [1] and I find that I was going to implement basically reactive streams. What we have now in github is similar but it uses a very crude method of blocking the thread to prevent back pressure. This can then cause severe issues as many users have found out when they don't close iterator.

Unfortunately reactive streams is just a spec. I am proposing to add RxJava [2] as a dependency [2] in the core module to provide access to reactive streams and the various conversion methods. This library adds a bunch of support for built in back pressure, transformations and much more which would reduce the amount of code I would need to write substantially.

In regards to timing, I am thinking this is too close for 9.1, so maybe 9.2 or higher.

What do you guys think?

[1] https://issues.jboss.org/browse/ISPN-7865
[2] https://github.com/ReactiveX/RxJava
[3] https://mvnrepository.com/artifact/io.reactivex.rxjava2/rxjava/2.1.0