I've quickly read through the proposal (and have worked with asynchronous data streams in a previous life...) - I have two questions to begin with:
-
When it comes to
BufferingPolicy
- has "conflation/merging" been considered as an additional policy? It's a different way to have some bound on the queue length, but would probably require some protocol for defining the merge operation on a type. We've found it a useful behaviour for data streams in general which can be more useful than just dropping data, while still keeping some bounds on the queue growth. -
We've found it useful to also be able to make a distinction for such data streams when an initial snapshot of data is done. This allows for use cases where one opens an async stream, receives all items initial state - then a
snapshotDone
- followed by 'live updates" to items. There doesn't seem to be any way to express that, has it been considered?
To be able to express both conflation/merging of items as well as being able to signal when an initial data set has been received would be useful IMHO.