( source, dest, preventClose, preventAbort, preventCancel, signal)
| 1455 | } |
| 1456 | |
| 1457 | function readableStreamPipeTo( |
| 1458 | source, |
| 1459 | dest, |
| 1460 | preventClose, |
| 1461 | preventAbort, |
| 1462 | preventCancel, |
| 1463 | signal) { |
| 1464 | |
| 1465 | let reader; |
| 1466 | let writer; |
| 1467 | let disposable; |
| 1468 | // Both of these can throw synchronously. We want to capture |
| 1469 | // the error and return a rejected promise instead. |
| 1470 | try { |
| 1471 | reader = new ReadableStreamDefaultReader(source); |
| 1472 | writer = new WritableStreamDefaultWriter(dest); |
| 1473 | } catch (error) { |
| 1474 | return PromiseReject(error); |
| 1475 | } |
| 1476 | |
| 1477 | source[kState].disturbed = true; |
| 1478 | |
| 1479 | let shuttingDown = false; |
| 1480 | |
| 1481 | if (signal !== undefined) { |
| 1482 | try { |
| 1483 | validateAbortSignal(signal, 'options.signal'); |
| 1484 | } catch (error) { |
| 1485 | return PromiseReject(error); |
| 1486 | } |
| 1487 | } |
| 1488 | |
| 1489 | const promise = PromiseWithResolvers(); |
| 1490 | |
| 1491 | const state = { |
| 1492 | currentWrite: PromiseResolve(), |
| 1493 | }; |
| 1494 | |
| 1495 | // The error here can be undefined. The rejected arg |
| 1496 | // tells us that the promise must be rejected even |
| 1497 | // when error is undefine. |
| 1498 | function finalize(rejected, error) { |
| 1499 | writableStreamDefaultWriterRelease(writer); |
| 1500 | readableStreamReaderGenericRelease(reader); |
| 1501 | if (signal !== undefined) |
| 1502 | disposable?.[SymbolDispose](); |
| 1503 | if (rejected) |
| 1504 | promise.reject(error); |
| 1505 | else |
| 1506 | promise.resolve(); |
| 1507 | } |
| 1508 | |
| 1509 | async function waitForCurrentWrite() { |
| 1510 | const write = state.currentWrite; |
| 1511 | await write; |
| 1512 | if (write !== state.currentWrite) |
| 1513 | await waitForCurrentWrite(); |
| 1514 | } |
no test coverage detected
searching dependent graphs…