diff --git a/index.bs b/index.bs index bba5a2100..c3af32ad6 100644 --- a/index.bs +++ b/index.bs @@ -2412,9 +2412,10 @@ nothrow>ReadableByteStreamControllerRespondInClosedState ( controller 1. Set _firstDescriptor_.[[buffer]] to ! TransferArrayBuffer(_firstDescriptor_.[[buffer]]). 1. Assert: _firstDescriptor_.[[bytesFilled]] is *0*. 1. Let _stream_ be _controller_.[[controlledReadableStream]]. - 1. Repeat the following steps while ! ReadableStreamGetNumReadIntoRequests(_stream_) > *0*, - 1. Let _pullIntoDescriptor_ be ! ReadableByteStreamControllerShiftPendingPullInto(_controller_). - 1. Perform ! ReadableByteStreamControllerCommitPullIntoDescriptor(_stream_, _pullIntoDescriptor_). + 1. If ReadableStreamHasBYOBReader(_stream_) is *true*, + 1. Repeat the following steps while ! ReadableStreamGetNumReadIntoRequests(_stream_) > *0*, + 1. Let _pullIntoDescriptor_ be ! ReadableByteStreamControllerShiftPendingPullInto(_controller_). + 1. Perform ! ReadableByteStreamControllerCommitPullIntoDescriptor(_stream_, _pullIntoDescriptor_).

Simon Menke, Stephen Sugden, Tab Atkins, diff --git a/reference-implementation/lib/readable-stream.js b/reference-implementation/lib/readable-stream.js index 390b56ff6..c8092dfd6 100644 --- a/reference-implementation/lib/readable-stream.js +++ b/reference-implementation/lib/readable-stream.js @@ -1642,11 +1642,11 @@ function ReadableByteStreamControllerRespondInClosedState(controller, firstDescr assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); const stream = controller._controlledReadableStream; - - while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { - const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); - - ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); + if (ReadableStreamHasBYOBReader(stream) === true) { + while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { + const pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); + } } } @@ -1717,11 +1717,11 @@ function ReadableByteStreamControllerShouldCallPull(controller) { return false; } - if (ReadableStreamHasDefaultReader(stream) && ReadableStreamGetNumReadRequests(stream) > 0) { + if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { return true; } - if (ReadableStreamHasBYOBReader(stream) && ReadableStreamGetNumReadIntoRequests(stream) > 0) { + if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { return true; } diff --git a/reference-implementation/web-platform-tests b/reference-implementation/web-platform-tests index c5ac311ff..d0c0af83d 160000 --- a/reference-implementation/web-platform-tests +++ b/reference-implementation/web-platform-tests @@ -1 +1 @@ -Subproject commit c5ac311ff64f38896279e1c130dce6f6d10b1f51 +Subproject commit d0c0af83d0baf95aed2c97e353a8da881abbbf8d