Re: [whatwg/streams] Is when pull() is called on an underlying source deterministic? (#1155)

@MattiasBuelens thanks for the great explanation! While this matches what I see over time, my issue is how it gets there:

> Each individual stream fills up to its own highWaterMark, pulling in chunks as necessary.

That would make sense (chunks shifted downstream without exceeding `highWaterMark`s of individual streams).

But that's not what I'm seeing. [Instead I see](https://jsfiddle.net/jib1/n6wLv54r/39/) `rs1` pull in 7 chunks off the bat, shifting only one of them downstream. (I've added a 1 second delay in the transforms to help examine order).

If I change the first transform's highWaterMark from `2` to `10`, `rs1` [pulls in](https://jsfiddle.net/jib1/n6wLv54r/40/) 15 chunks off the bat, almost 200% over its highWaterMark.

10 of them seem in limbo, since `rs1`'s `desiredSize` is `0`. But things stay in this state for a whole second. Where are they? 

> In general, I don't think it's possible for a ReadableStream to know when "the final consumer" has received a previously enqueued chunk

To clarify https://github.com/w3c/mediacapture-transform/issues/56, that proposal is not to extend lifetime to "the final consumer", only to the immediate consumer(s). Those would need to `frame.clone()` to forward downstream.

> make the final consumer ... manually close() the chunk when it (eventually) receives it.

https://github.com/w3c/mediacapture-transform/issues/56 is about that not working with `tee()`. 

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/whatwg/streams/issues/1155#issuecomment-892079790

Received on Tuesday, 3 August 2021 18:47:10 UTC