- From: Adam Rice <notifications@github.com>
- Date: Mon, 07 Jun 2021 03:03:09 -0700
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/1114/review/677150652@github.com>
@ricea commented on this pull request. I've checked the algorithms and cross-referenced against the reference implementation and it all looks good. I haven't analysed it for re-entrancy risk. I'm a bit worried about that. > + 1. Perform ! [$ReadableByteStreamControllerError$](|branch2|.[=ReadableStream/[[controller]]=], + |r|). + 1. If |canceled1| is false or |canceled2| is false, [=resolve=] |cancelPromise| with undefined. + 1. Let |pullWithDefaultReader| be the following steps: + 1. If |reader| [=implements=] {{ReadableStreamBYOBReader}}, + 1. Assert: |reader|.[=ReadableStreamBYOBReader/[[readIntoRequests]]=] is [=list/is empty|empty=]. + 1. Perform ! [$ReadableStreamReaderGenericRelease$](|reader|). + 1. Set |reader| to ! [$AcquireReadableStreamDefaultReader$](|stream|). + 1. Perform |forwardReaderError|, given |reader|. + 1. Let |readRequest| be a [=read request=] with the following [=struct/items=]: + : [=read request/chunk steps=], given |chunk| + :: + 1. [=Queue a microtask=] to perform the following steps: + 1. Set |reading| to false. + 1. Let |chunk1| and |chunk2| be |chunk|. + 1. If |canceled1| is false and |canceled2| is false, set |chunk2| to ? @domenic What actually happens if CloneAsUint8Array throws here, given that we're running as a microtask? > + 1. If |otherCanceled| is false and + |otherBranch|.[=ReadableStream/[[controller]]=].[=ReadableByteStreamController/[[pendingPullIntos]]=] + is not [=list/is empty|empty=], perform ! + [$ReadableByteStreamControllerRespond$](|otherBranch|.[=ReadableStream/[[controller]]=], 0). + 1. If |byobCanceled| is false or |otherCanceled| is false, [=resolve=] |cancelPromise| with undefined. + + : [=read-into request/error steps=] + :: + 1. Set |reading| to false. + 1. Perform ! [$ReadableStreamBYOBReaderRead$](|reader|, |view|, |readIntoRequest|). + 1. Let |pull1Algorithm| be the following steps: + 1. If |reading| is true, return [=a promise resolved with=] undefined. + 1. Set |reading| to true. + 1. Let |byobRequest| be ! [$ReadableByteStreamControllerGetBYOBRequest$](|branch1|.[=ReadableStream/[[controller]]=]). + 1. If |byobRequest| is null, + 1. Perform |pullWithDefaultReader|. Please put the action on the same line as the condition. I think @domenic already said this, but I can't find his comment. -- 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#pullrequestreview-677150652
Received on Monday, 7 June 2021 10:04:09 UTC