- From: Domenic Denicola <notifications@github.com>
- Date: Mon, 29 Mar 2021 11:11:58 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/1114/review/623512571@github.com>
@domenic commented on this pull request. > + if (forBranch2 === true) { + if (canceled1 === false) { + const clonedChunk = CloneArrayBufferView(chunk); + ReadableByteStreamControllerEnqueue(branch1._controller, clonedChunk); + } + if (canceled2 === true) { + chunk = new Uint8Array(chunk.buffer, chunk.byteOffset, 0); + } + ReadableByteStreamControllerRespondWithNewView(branch2._controller, chunk); + } else { + if (canceled2 === false) { + const clonedChunk = CloneArrayBufferView(chunk); + ReadableByteStreamControllerEnqueue(branch2._controller, clonedChunk); + } + if (canceled1 === true) { + chunk = new Uint8Array(chunk.buffer, chunk.byteOffset, 0); Thanks so much for the analysis and walking me through it! > This also means that every underlying byte source implementation must do something like this in its cancel algorithm: This seems like a significant footgun, especially given that none of the [example byte sources in the spec](https://streams.spec.whatwg.org/#example-rbs-push) do so. Can we make this easier somehow? E.g.: - Automatically introspect `byobRequest.view` and if it's transferred, call (the equivalent of) `respondWithNewView(constructedView)`, and if it's not transferred, call `respond(0)`? - Relax the requirement that the last BYOB read should resolve with `value: emptyChunk`? -- 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/pull/1114#discussion_r603507959
Received on Monday, 29 March 2021 18:12:11 UTC