From 2bebdc9116f0824f0eb6241445de6fb1925f4c15 Mon Sep 17 00:00:00 2001 From: Leo Kettmeir Date: Mon, 18 Jul 2022 22:24:35 +0200 Subject: feat(unstable): Ability to ref/unref "Child" in "Deno.spawnChild()" API (#15151) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bartek IwaƄczuk Co-authored-by: Colin Ihrig --- ext/web/06_streams.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) (limited to 'ext') diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index 9ec028e4b..7f67e81ed 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -647,13 +647,28 @@ const DEFAULT_CHUNK_SIZE = 64 * 1024; // 64 KiB - function readableStreamForRid(rid) { + /** + * @callback unrefCallback + * @param {Promise} promise + * @returns {undefined} + */ + /** + * @param {number} rid + * @param {unrefCallback=} unrefCallback + * @returns {ReadableStream} + */ + function readableStreamForRid(rid, unrefCallback) { const stream = new ReadableStream({ type: "bytes", async pull(controller) { const v = controller.byobRequest.view; try { - const bytesRead = await core.read(rid, v); + const promise = core.read(rid, v); + + unrefCallback?.(promise); + + const bytesRead = await promise; + if (bytesRead === 0) { core.tryClose(rid); controller.close(); -- cgit v1.2.3