@@ -6,7 +6,7 @@ const { promiseResolvedWith, promiseRejectedWith, newPromise, resolvePromise, re
6
6
require ( '../helpers/webidl.js' ) ;
7
7
const { CanTransferArrayBuffer, CopyDataBlockBytes, CreateArrayFromList, IsDetachedBuffer, TransferArrayBuffer } =
8
8
require ( './ecmascript.js' ) ;
9
- const { CloneAsUint8Array, IsNonNegativeNumber, StructuredTransferOrClone } = require ( './miscellaneous.js' ) ;
9
+ const { CloneAsUint8Array, IsNonNegativeNumber, RunCloseSteps , StructuredTransferOrClone } = require ( './miscellaneous.js' ) ;
10
10
const { EnqueueValueWithSize, ResetQueue } = require ( './queue-with-sizes.js' ) ;
11
11
const { AcquireWritableStreamDefaultWriter, IsWritableStreamLocked, WritableStreamAbort,
12
12
WritableStreamDefaultWriterCloseWithErrorPropagation, WritableStreamDefaultWriterRelease,
@@ -136,6 +136,7 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
136
136
137
137
const reader = AcquireReadableStreamDefaultReader ( source ) ;
138
138
const writer = AcquireWritableStreamDefaultWriter ( dest ) ;
139
+ writer . _stream . _controller . _isPipeToOptimizedTransfer = source . _controller . _isOwning && dest . _controller . _isOwning ;
139
140
140
141
source . _disturbed = true ;
141
142
@@ -206,7 +207,11 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
206
207
{
207
208
chunkSteps : chunk => {
208
209
currentWrite = transformPromiseWith (
209
- WritableStreamDefaultWriterWrite ( writer , chunk ) , undefined , ( ) => { }
210
+ WritableStreamDefaultWriterWrite ( writer , chunk ) , undefined , ( ) => {
211
+ if ( reader . _stream . _controller . _isOwning ) {
212
+ RunCloseSteps ( chunk ) ;
213
+ }
214
+ }
210
215
) ;
211
216
resolveRead ( false ) ;
212
217
} ,
@@ -319,6 +324,7 @@ function ReadableStreamPipeTo(source, dest, preventClose, preventAbort, preventC
319
324
}
320
325
321
326
function finalize ( isError , error ) {
327
+ writer . _stream . _controller . _isPipeToOptimizedTransfer = undefined ;
322
328
WritableStreamDefaultWriterRelease ( writer ) ;
323
329
ReadableStreamDefaultReaderRelease ( reader ) ;
324
330
0 commit comments