@@ -1662,9 +1662,14 @@ class PipeToReadableStreamReadRequest {
|
1662 | 1662 | } |
1663 | 1663 | |
1664 | 1664 | [kChunk](chunk) { |
1665 | | -this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk); |
1666 | | -setPromiseHandled(this.state.currentWrite); |
1667 | | -this.promise.resolve(false); |
| 1665 | +// Per spec, pipeTo must queue a microtask for the write to avoid |
| 1666 | +// synchronous write during enqueue(). See WHATWG Streams spec |
| 1667 | +// "ReadableStreamPipeTo" step 15's "chunk steps". |
| 1668 | +queueMicrotask(() => { |
| 1669 | +this.state.currentWrite = writableStreamDefaultWriterWrite(this.writer, chunk); |
| 1670 | +setPromiseHandled(this.state.currentWrite); |
| 1671 | +this.promise.resolve(false); |
| 1672 | +}); |
1668 | 1673 | } |
1669 | 1674 | |
1670 | 1675 | [kClose]() { |
|