Repository navigation
fix(fetch): preserve abort ownership for non-HTTP bodies - #6111
vincentkoc wants to merge 1 commit into
Conversation
Signed-off-by: Vincent Koc <vincentkoc@ieee.org>
|
Additional downstream evidence from OpenClaw's native qualification run:
The official Node v24.22.1 bundle matches these logged frames: line 13198 dereferences |
This relates to...
Fixes #6110.
Rationale
Aborting an unread data response reaches an HTTP-only stream controller and throws instead of rejecting the body. Blob and integrity-replaced response bodies also need a body-owned error capability. Cloning must keep the fetched Response's current branch abortable without retaining the public Response.
Changes
Features
N/A.
Bug Fixes
Preserve abort rejection and cleanup for non-HTTP and replaced Fetch response bodies.
Breaking Changes and Deprecations
None intended. Already-completed clone branches remain readable after abort.
Status
Local validation on the exact candidate:
npm run lint: passed on Node 26.12.1.npm run test:fetchon Node 24.16.0: passed the complete native chain—Fetch 518/518, WebIDL 28/28, Busboy 49/49, with no failed, skipped or cancelled cases.node --expose-gc --test --test-concurrency=1 --test-timeout=10000 test/fetch/issue-6110.js test/fetch/issue-4799.js: 33/33 passed on Node 22.23.2 and 24.16.0, with no skipped or cancelled cases.npm run test:fetchon Node 26.12.1: 518 tests, 517 passed, one failed:test/fetch/referrrer-policy.js, “should set referrer policy from response headers on redirect” (plan expected 1 assertions but received 0). The same file subsequently passed 12/12 on both the unchanged base and candidate under matched runtime/environment/runner settings. That isolated result does not explain or supersede the full-run failure.NO_COLOR/FORCE_COLORsettings in bundle-parser child stderr. RemovingFORCE_COLORfor validation commands resolved that exact surface (8/8 passed), without changing source or assertions. The 517/518 result above used this corrected environment.The
test:fetchcommand stopped at the Fetch stage. Its sibling scripts were then run independently on Node 26.12.1:npm run test:webidl -- --concurrency 1passed 28/28;npm run test:busboy -- --concurrency 1passed 49/49 (no skipped or cancelled cases). One temporary observational run of the complete 12-case referrer file also passed: every case reached its own target assertion before fetch fulfillment and teardown. The instrumentation was restored afterward. This did not reproduce or explain the full-run failure; no source or assertion change was made for it. Full-suite/WPT, cross-OS, shared-builtin and performance qualification remain incomplete; the unchanged shared-builtin CI job is disabled upstream. Existing upstream CI, Benchmarks and CodeQL runs await maintainer approval and have executed no jobs. No personal-repository workflow runs were dispatched or executed.Independent owner/cleanup source review and a fresh complete-source autoreview found no actionable findings. Ready for maintainer review; merge readiness and complete test qualification remain open because of the unresolved Node 26 full-run failure and pending upstream matrix/performance results. The source reviews do not replace runtime or performance qualification.
Candidate:
e6c2b7f806c38ee47243a6286ecfaf7c2fea1ed2; tree0a6fad486120bbb4a4f8158fd0ff9312771df2b3; base609c6efca79f1592954d5fe10e58f69cda342a07. Workflows and package metadata are unchanged.