Replace AsyncBackpressuredStream with updated implementation #29
Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
Motivation
As a follow up to #27, we noted it would be good to align on the latest draft implementation of SE-0406 (AsyncStream with backpressure) to both pickup the latest improvements in performance and correctness, and to minimise the churn if/when this lands in the standard library or standalone package.
Modifications
In order to simplify reviewing the following modifications have been made in independent commits:
Add updated SE-0406 implementation as BufferedStream, incl. tests: Skim over this—it's vendored in wholesale.Port the custom watermark support to BufferedStream: Skim over this—it's a 1:1 port of the logic that was added toAsyncBackpressuredStream.Switch from AsyncBackpressuredStream to BufferedStream in delegate: Review this—it's a minimal change.Remove AsyncBackpressuredStream and its vendored locks: Skim over this—it's removing the old implementation.Result
No functional change, but the internal async sequence we're using should be more robust, performant, and more likely to match a future standard library type.
Test Plan
BufferedStreamactually comes with a much greater number of vendored tests than the previous revision.