From 1f0e2493f159d61f9974ea416a0efc34df6ad426 Mon Sep 17 00:00:00 2001 From: lilsweetcaligula <15699226+lilsweetcaligula@users.noreply.github.com> Date: Tue, 14 Feb 2023 06:02:59 +0200 Subject: [PATCH] stream: investigate memory overconsumption by Stream.Readable.toWeb --- lib/internal/webstreams/readablestream.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js index 0df8f7aa7f6f35..588f65f64b9834 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -1939,6 +1939,14 @@ function readableStreamError(stream, error) { } } +function readableStreamHasReader(stream) { + const { + reader, + } = stream[kState]; + + return reader != null; +} + function readableStreamHasDefaultReader(stream) { const { reader, @@ -2230,6 +2238,10 @@ function readableStreamDefaultControllerShouldCallPull(controller) { !controller[kState].started) return false; + if (!readableStreamHasReader(stream)) { + return false; + } + if (isReadableStreamLocked(stream) && readableStreamGetNumReadRequests(stream)) { return true; @@ -2466,6 +2478,11 @@ function readableByteStreamControllerShouldCallPull(controller) { !controller[kState].started) { return false; } + + if (!readableStreamHasReader(stream)) { + return false; + } + if (readableStreamHasDefaultReader(stream) && readableStreamGetNumReadRequests(stream) > 0) { return true;