@@ -6,7 +6,7 @@ const { promiseResolvedWith, promiseRejectedWith, newPromise, resolvePromise, re
66 require ( '../helpers/webidl.js' ) ;
77const { CanTransferArrayBuffer, CopyDataBlockBytes, CreateArrayFromList, IsDetachedBuffer, TransferArrayBuffer } =
88 require ( './ecmascript.js' ) ;
9- const { CloneAsUint8Array, IsNonNegativeNumber, StructuredTransferOrClone } = require ( './miscellaneous.js' ) ;
9+ const { CloneAsUint8Array, IsNonNegativeNumber, RunCloseSteps , StructuredTransferOrClone } = require ( './miscellaneous.js' ) ;
1010const { EnqueueValueWithSize, ResetQueue } = require ( './queue-with-sizes.js' ) ;
1111const { AcquireWritableStreamDefaultWriter, IsWritableStreamLocked, WritableStreamAbort,
1212 WritableStreamDefaultWriterCloseWithErrorPropagation, WritableStreamDefaultWriterRelease,
@@ -136,6 +136,7 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
136136
137137 const reader = AcquireReadableStreamDefaultReader ( source ) ;
138138 const writer = AcquireWritableStreamDefaultWriter ( dest ) ;
139+ writer . _stream . _controller . _isPipeToOptimizedTransfer = source . _controller . _isOwning && dest . _controller . _isOwning ;
139140
140141 source . _disturbed = true ;
141142
@@ -206,7 +207,11 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
206207 {
207208 chunkSteps : chunk => {
208209 currentWrite = transformPromiseWith (
209- WritableStreamDefaultWriterWrite ( writer , chunk ) , undefined , ( ) => { }
210+ WritableStreamDefaultWriterWrite ( writer , chunk ) , undefined , ( ) => {
211+ if ( reader . _stream . _controller . _isOwning ) {
212+ RunCloseSteps ( chunk ) ;
213+ }
214+ }
210215 ) ;
211216 resolveRead ( false ) ;
212217 } ,
@@ -319,6 +324,7 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
319324 }
320325
321326 function finalize ( isError , error ) {
327+ writer . _stream . _controller . _isPipeToOptimizedTransfer = undefined ;
322328 WritableStreamDefaultWriterRelease ( writer ) ;
323329 ReadableStreamDefaultReaderRelease ( reader ) ;
324330
0 commit comments