SE-0314 (Second review): AsyncStream and AsyncThrowingStream

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:

  1. 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.

  2. 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.

2 Likes