diff options
author | Marcos Casagrande <marcoscvp90@gmail.com> | 2022-10-14 11:51:39 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-14 09:51:39 +0000 |
commit | e6e28981909f220ff0b98a13c692c0203eaf6035 (patch) | |
tree | 47af99a319746206d61d974e57b5ddab35392dba /ext/web/06_streams.js | |
parent | 0d6dbc08bec50aa1548703bf53dc632e0aeefbd6 (diff) |
fix(ext/web/streams): enqueue to second branch before closing (#16269)
Co-authored-by: Luca Casonato <hello@lcas.dev>
Diffstat (limited to 'ext/web/06_streams.js')
-rw-r--r-- | ext/web/06_streams.js | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/ext/web/06_streams.js b/ext/web/06_streams.js index 361e5e055..c783b9518 100644 --- a/ext/web/06_streams.js +++ b/ext/web/06_streams.js @@ -2616,6 +2616,7 @@ assert(typeof cloneForBranch2 === "boolean"); const reader = acquireReadableStreamDefaultReader(stream); let reading = false; + let readAgain = false; let canceled1 = false; let canceled2 = false; /** @type {any} */ @@ -2634,6 +2635,7 @@ function pullAlgorithm() { if (reading === true) { + readAgain = true; return resolvePromiseWith(undefined); } reading = true; @@ -2641,7 +2643,7 @@ const readRequest = { chunkSteps(value) { queueMicrotask(() => { - reading = false; + readAgain = false; const value1 = value; const value2 = value; @@ -2663,6 +2665,11 @@ value2, ); } + + reading = false; + if (readAgain === true) { + pullAlgorithm(); + } }); }, closeSteps() { |