Abort fetch controller when signal is aborted (#39374)

Does not all tests pass because of a mismatch in microtask timing. The
promises are resolved/rejected in the wrong order.

Part of #34866

Signed-off-by: Tim van der Lippe <tvanderlippe@gmail.com>
This commit is contained in:
Tim van der Lippe 2025-09-21 14:33:03 +02:00 committed by GitHub
parent 016524bd3c
commit 7abc813fc3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 103 additions and 127 deletions

View file

@ -5,7 +5,6 @@
expected: ERROR
[general.any.html]
expected: TIMEOUT
[Request is still 'used' if signal is aborted before fetching]
expected: FAIL
@ -27,48 +26,11 @@
[Call text() twice on aborted response]
expected: FAIL
[Underlying connection is closed when aborting after receiving response]
expected: FAIL
[Underlying connection is closed when aborting after receiving response - no-cors]
expected: FAIL
[Fetch aborted & connection closed when aborted after calling response.arrayBuffer()]
expected: TIMEOUT
[Fetch aborted & connection closed when aborted after calling response.blob()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.formData()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.json()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.text()]
expected: NOTRUN
[Stream errors once aborted. Underlying connection closed.]
expected: NOTRUN
[Stream errors once aborted, after reading. Underlying connection closed.]
expected: NOTRUN
[Stream will not error if body is empty. It's closed with an empty queue before it errors.]
expected: NOTRUN
[Readable stream synchronously cancels with AbortError if aborted before reading]
expected: NOTRUN
[response.bytes() rejects if already aborted]
expected: FAIL
[Fetch aborted & connection closed when aborted after calling response.bytes()]
expected: NOTRUN
[general.any.worker.html]
expected: TIMEOUT
[Request is still 'used' if signal is aborted before fetching]
expected: FAIL
@ -90,41 +52,5 @@
[Call text() twice on aborted response]
expected: FAIL
[Underlying connection is closed when aborting after receiving response]
expected: FAIL
[Underlying connection is closed when aborting after receiving response - no-cors]
expected: FAIL
[Fetch aborted & connection closed when aborted after calling response.arrayBuffer()]
expected: TIMEOUT
[Fetch aborted & connection closed when aborted after calling response.blob()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.formData()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.json()]
expected: NOTRUN
[Fetch aborted & connection closed when aborted after calling response.text()]
expected: NOTRUN
[Stream errors once aborted. Underlying connection closed.]
expected: NOTRUN
[Stream errors once aborted, after reading. Underlying connection closed.]
expected: NOTRUN
[Stream will not error if body is empty. It's closed with an empty queue before it errors.]
expected: NOTRUN
[Readable stream synchronously cancels with AbortError if aborted before reading]
expected: NOTRUN
[response.bytes() rejects if already aborted]
expected: FAIL
[Fetch aborted & connection closed when aborted after calling response.bytes()]
expected: NOTRUN

View file

@ -1,7 +0,0 @@
[keepalive.html]
expected: TIMEOUT
[aborting a keepalive fetch should work]
expected: TIMEOUT
[aborting a detached keepalive fetch should not do anything]
expected: NOTRUN