From f9949a31707dcaa5a8786bfe4f84ed202be91607 Mon Sep 17 00:00:00 2001 From: Kitson Kelly Date: Tue, 26 Jan 2021 21:56:29 +1100 Subject: fix(op_crates/fetch): fix ReadableStream.pipeThrough() (#9265) Fixes #9252 --- op_crates/fetch/11_streams.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'op_crates') diff --git a/op_crates/fetch/11_streams.js b/op_crates/fetch/11_streams.js index 827f8c232..b7a9acca0 100644 --- a/op_crates/fetch/11_streams.js +++ b/op_crates/fetch/11_streams.js @@ -3136,21 +3136,35 @@ * @returns {ReadableStream} */ pipeThrough( - { readable, writable }, + transform, { preventClose, preventAbort, preventCancel, signal } = {}, ) { + if (!isReadableStream(this)) { + throw new TypeError("this must be a ReadableStream"); + } + const { readable } = transform; + if (!isReadableStream(readable)) { + throw new TypeError("readable must be a ReadableStream"); + } + const { writable } = transform; + if (!isWritableStream(writable)) { + throw new TypeError("writable must be a WritableStream"); + } if (isReadableStreamLocked(this)) { throw new TypeError("ReadableStream is already locked."); } + if (signal !== undefined && !(signal instanceof AbortSignal)) { + throw new TypeError("signal must be an AbortSignal"); + } if (isWritableStreamLocked(writable)) { throw new TypeError("Target WritableStream is already locked."); } const promise = readableStreamPipeTo( this, writable, - preventClose, - preventAbort, - preventCancel, + Boolean(preventClose), + Boolean(preventAbort), + Boolean(preventCancel), signal, ); setPromiseIsHandledToTrue(promise); -- cgit v1.2.3