- From: Dariusz Dorożalski <notifications@github.com>
- Date: Mon, 19 Jul 2021 18:13:07 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
Received on Tuesday, 20 July 2021 01:13:19 UTC
> > While it might be nice syntactically to have `cancel()` return any bytes left in the queue I think this can be polyfilled with, > > ```js > > const finalReadPromise = reader.read(); > > await reader.cancel(); > > const finalRead = await finalReadPromise; > > ``` > > That's pretty clever! 😀 It should work in simple cases, although I'm not sure how well it would translate to more complex scenarios (e.g. pipe chains or cross-realm streams) where chunks are buffered in multiple streams. I want exactly this behavior, but it does not work this way in current Chrome. "finalReadPromise" is immediately resolved with _{ value:undefined, done:true}_ and nothing is read from the port at all. I send a lazy stream of 1 byte containing a sequence number every 50-100 ms. I've got some results with this code but with 1-2% data loss. ``` setTimeout( () => {reader.cancel()} , 0); data = await reader.read(); console.log( data); ``` -- 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/1147#issuecomment-882969240
Received on Tuesday, 20 July 2021 01:13:19 UTC