https://github.com/ReactiveX/IxJS
RxJS is for observables. IxJS is for iterables. Or, a bit more accurately, as explained in the readme:
IxJS unifies both synchronous and asynchronous pull-based collections, just as RxJS unified the world of push-based collections. RxJS is great for event-based workflows where the data can be pushed at the rate of the producer, however, IxJS is great at I/O operations where you as the consumer can pull the data when you are ready.
If there is more than one Observer of the same AsyncObservable, is there a separate queue for each of them?
I'm thinking of AsyncSink[1] used by AsyncIterableX[2] (both of IxJS[3]) and how they might be conceptually related to implementations of AsyncObservable.
[1] https://github.com/ReactiveX/IxJS/blob/master/src/asyncsink....
[2] https://github.com/ReactiveX/IxJS/blob/master/src/asyncitera...
An interesting alternative to the library mentioned here is that IxJS is the RxJS team's own implementation of the sorts of operators that Axax is trying to provide, though for both ordinary iterators and async iterators: https://github.com/ReactiveX/IxJS
IxJS gets the benefits of trying to share as much as possible the same API as RxJS, making it really easy to use bits of IxJS and RxJS in the same project, depending on use case.
It additionally has the benefits of ESNext (Stage 3) AsyncIterable support, and some synergy with RxJS.