From 8e65650c2c6c338fbe7452c54616fd5e0b1e5fb0 Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Sat, 30 May 2026 19:01:40 +0200 Subject: [PATCH] stream: optimize pipeTo promise handling Signed-off-by: Matteo Collina --- lib/internal/webstreams/readablestream.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js index a46289723a7f43..8ae3fff11abbf1 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -47,6 +47,10 @@ const { DOMException, } = internalBinding('messaging'); +const { + markPromiseAsHandled, +} = internalBinding('util'); + const { isArrayBufferView, isDataView, @@ -1569,9 +1573,9 @@ function readableStreamPipeTo( } // Write the chunk - we're already in a separate microtask from enqueue - // because we awaited writer[kState].ready.promise above + // because we awaited writer[kState].ready.promise above. state.currentWrite = writableStreamDefaultWriterWrite(writer, chunk); - setPromiseHandled(state.currentWrite); + markPromiseAsHandled(state.currentWrite); // Check backpressure after each write if (dest[kState].backpressure) { @@ -1675,7 +1679,7 @@ class PipeToReadableStreamReadRequest { // "ReadableStreamPipeTo" step 15's "chunk steps". queueMicrotask(() => { this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk); - setPromiseHandled(this.state.currentWrite); + markPromiseAsHandled(this.state.currentWrite); this.promise.resolve(false); }); }