Will have to be split into multiple tickets.
Check with async experts (Clément?) that implementing our own publisher/subscriber is not a bad idea (not the reactive map/filter/etc. bits, just the raw publisher/subscriber)
Implement/expose result scrolling as a createPublisher operation so that users can wrap that with their reactive library.
Implement mass indexing with a publisher/subscriber pattern
Size of workset queues: see HSEARCH-3575.
Make queueing of works throw an exception instead of blocking when the queue is full. Maybe allow the client to choose between failing and blocking? It might make sense to block if the client will block anyway.
Implement cancellation of works: see