From 736cc50fa7f11d85943d9e84f946c9c471111835 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Wed, 24 Dec 2025 14:15:31 +0100 Subject: [PATCH] Fix aborted UrlSource not aborting request --- src/source.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/source.ts b/src/source.ts index efd4879..0059189 100644 --- a/src/source.ts +++ b/src/source.ts @@ -263,6 +263,11 @@ export class BlobSource extends Source { } worker.running = false; + + if (worker.aborted) { + // MDN: "Calling this method signals a loss of interest in the stream by a consumer." + await reader?.cancel(); + } } /** @internal */ @@ -556,7 +561,7 @@ export class UrlSource extends Source { } if (worker.aborted) { - break; + continue; // Cleanup happens in next iteration } const { done, value } = readResult; @@ -578,14 +583,8 @@ export class UrlSource extends Source { this.onread?.(worker.currentPos, worker.currentPos + value.length); this._orchestrator.supplyWorkerData(worker, value); } - - if (worker.aborted) { - break; - } } - worker.running = false; - // The previous UrlSource had logic for circumventing https://issues.chromium.org/issues/436025873; I haven't // been able to observe this bug with the new UrlSource (maybe because we're using response streaming), so the // logic for that has vanished for now. Leaving a comment here if this becomes relevant again.