What's Changed
- fetch: use ReadableStreamTee for cloning streams by @KhafraDev in #5517
- fix(benchmarks): adjust got after v15 upgrade by @slagiewka in #5526
- feat(mock): support asynchronous reply options callbacks by @Develop-KIM in #5534
- docs: clarify proxy threat model by @mcollina in #5530
- docs: clarify MockAgent pool usage by @vibhor-aggr in #5542
- docs: clarify parser timeout precision by @vibhor-aggr in #5543
- fix: handle flat alternating header arrays in cache normalizeHeaders by @mcollina in #5536
- chore(benchmarks): require(esm) on ESM-only packages by @slagiewka in #5527
- fix: run idle socket validation off setImmediate instead of setTimeout by @carlotestor in #5499
- docs: add custom interceptor example by @vibhor-aggr in #5548
- fix(h1): ignore type of service errors by @mcollina in #5547
- fix(fetch): convert null init in Response.json by @Ram-blip in #5540
- fix(redirect): remove body headers after POST-to-GET by @Ram-blip in #5551
- build(deps-dev): bump fast-check from 4.8.0 to 4.9.0 by @dependabot[bot] in #5556
- fix(h2): allow stream-bodied requests to multiplex on a busy session by @GiHoon1123 in #5538
- fix(h2): destroy aborted stream synchronously instead of via setImmediate by @staylor in #5559
- fix(decompress): skip HEAD responses by @Ram-blip in #5564
- ci: build undici with node.js v26 by @shivarm in #5237
- docs: clarify top-level request option url fields by @vibhor-aggr in #5545
- test: add unexpected disconnect guards to http2 tests by @Develop-KIM in #5533
- fix: track origins by client map key in Agent teardown by @emmayusufu in #5537
- fix: enforce must-revalidate and proxy-revalidate over max-stale and stale-if-error by @jeswr in #5511
- fix(retry): handle Retry-After zero delay by @Ram-blip in #5519
- fix: honor stale-if-error on connection errors during revalidation by @jeswr in #5513
- fix: store revalidation-only responses so etag revalidation can engage by @jeswr in #5515
- fix(h2): prevent uncaughtException from onHttp2SocketError accessing undefined kClient by @mcollina in #5546
- fix(h2): complete request stream on 'end' instead of waiting for 'close' by @staylor in #5560
- fix: invalidate Location and Content-Location URIs on unsafe methods by @jeswr in #5514
- test: deflake invalid websocket close status test by @mcollina in #5550
- refactor: replace tspl with node:test t.plan in connect-timeout tests by @mcollina in #5518
- fix(h2): release completed requests from queue by @staylor in #5569
New Contributors
- @Develop-KIM made their first contribution in #5534
- @carlotestor made their first contribution in #5499
- @GiHoon1123 made their first contribution in #5538
- @emmayusufu made their first contribution in #5537
Full Changelog: v8.7.0...v8.8.0