Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: tweak keep-alive timeout implementation #3145

Merged
merged 4 commits into from Apr 22, 2024

Conversation

mweberxyz
Copy link
Contributor

Closes #3141

This relates to...

Rationale

The goal of the util/timers.js is to provide setTimeout-compatible timers with 1 second granularity, as opposed to native setTimeout's 1ms. Because the timers were scheduled, then executed in two separate "ticks" of the fast timeout, this meant timeouts are called best case 1000ms after intended, and worst case 2000ms. Combined with the previous 1000ms default for keepAliveTimeoutThreshold, the end result is an effective keepAliveTimeoutThreshold of 0 -- so unluckily timed requests would attempt to use a connection which has already been closed by the remote.

Changes

Multi-pronged approach here to prioritize safety and avoid attempting to re-use sockets that have already been closed:

  1. Increase default keepAliveTimeoutThreshold from 1000 to 2000
  2. Determine timeout times immediately upon timeout registration, instead of in the next tick of fast timer
  3. Double fast timer tick rate
  4. Timer tests added: see test file comments for approach details

Note to @ronag I went with change 2 instead of the proposed subtraction of the tick time from the duration because after writing the tests, that approach was more flaky.

Features

N/A

Bug Fixes

Some of the reports in #3133 may be resolved by this change, though it would need to be backported to 5.x, included in a Node v20 release, and then picked up by Amazon before we would see any improvement. ¯\_(ツ)_/¯

Breaking Changes and Deprecations

The more conservative default keepAliveTimeoutThreshold value should not be a breaking change.

Benchmarks

Within run-to-run variance:

PR:

┌─────────┬─────────────────────┬─────────┬────────────────────┬────────────┬─────────────────────────┐
│ (index) │ Tests               │ Samples │ Result             │ Tolerance  │ Difference with slowest │
├─────────┼─────────────────────┼─────────┼────────────────────┼────────────┼─────────────────────────┤
│ 0       │ 'undici - fetch'    │ 45      │ '16454.53 req/sec' │ '± 2.74 %' │ '-'                     │
│ 1       │ 'undici - pipeline' │ 25      │ '23976.66 req/sec' │ '± 2.61 %' │ '+ 45.71 %'             │
│ 2       │ 'undici - stream'   │ 15      │ '31539.92 req/sec' │ '± 2.94 %' │ '+ 91.68 %'             │
│ 3       │ 'undici - request'  │ 40      │ '31627.55 req/sec' │ '± 2.98 %' │ '+ 92.21 %'             │
│ 4       │ 'undici - dispatch' │ 10      │ '36186.91 req/sec' │ '± 2.54 %' │ '+ 119.92 %'            │
└─────────┴─────────────────────┴─────────┴────────────────────┴────────────┴─────────────────────────┘

main:

┌─────────┬─────────────────────┬─────────┬────────────────────┬────────────┬─────────────────────────┐
│ (index) │ Tests               │ Samples │ Result             │ Tolerance  │ Difference with slowest │
├─────────┼─────────────────────┼─────────┼────────────────────┼────────────┼─────────────────────────┤
│ 0       │ 'undici - fetch'    │ 40      │ '17433.63 req/sec' │ '± 2.88 %' │ '-'                     │
│ 1       │ 'undici - pipeline' │ 30      │ '23934.65 req/sec' │ '± 3.00 %' │ '+ 37.29 %'             │
│ 2       │ 'undici - request'  │ 101     │ '29557.97 req/sec' │ '± 3.88 %' │ '+ 69.55 %'             │
│ 3       │ 'undici - dispatch' │ 20      │ '32711.63 req/sec' │ '± 2.60 %' │ '+ 87.64 %'             │
│ 4       │ 'undici - stream'   │ 15      │ '34008.68 req/sec' │ '± 2.35 %' │ '+ 95.08 %'             │ 
└─────────┴─────────────────────┴─────────┴────────────────────┴────────────┴─────────────────────────┘

Status

@mweberxyz
Copy link
Contributor Author

The results of the replication used in tracking down the issue, after this PR changes:

% node test-latency.js
target = 1000, actual = 1003
target = 1500, actual = 1520
target = 1990, actual = 2022
target = 1999, actual = 2022
target = 2000, actual = 2022
target = 2001, actual = 2022
target = 2500, actual = 2524
target = 3000, actual = 3026
target = 2990, actual = 3026
target = 2999, actual = 3028
target = 4000, actual = 4030
target = 5000, actual = 5032
10s elapsed, exiting

lib/util/timers.js Outdated Show resolved Hide resolved
Copy link
Member

@ronag ronag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM other than calling Date.now() on every registration.

@mcollina
Copy link
Member

CI is really red.

I don't think there is literally anything we can do for #3133 without the intervention of AWS. Let's fix the race condition anyway.

undici v6 will land on v20 soonish, so let's get this done ;).

Copy link
Member

@ronag ronag left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the only thing you need to change is the interval to 500 ms. Maybe the 2s default also makes sense.

@mweberxyz
Copy link
Contributor Author

Tests should go green - that test was impacted by the change to the default.

@codecov-commenter
Copy link

codecov-commenter commented Apr 22, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 94.17%. Comparing base (b07a9d2) to head (cc2d298).
Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3145      +/-   ##
==========================================
- Coverage   94.17%   94.17%   -0.01%     
==========================================
  Files          90       90              
  Lines       24324    24302      -22     
==========================================
- Hits        22908    22886      -22     
  Misses       1416     1416              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@mweberxyz
Copy link
Contributor Author

@ronag ptal. I tried this strategy at first, but it lead to a slight amount of non-determinism when a timer is requested that is an exact multiple of the tick rate (such as: test/request-timeout.js:31). Setting TICK_MS to 499 appears to be enough to make test runs pass consistently.

@mweberxyz
Copy link
Contributor Author

Ah, here is an example of the loss of precision (even with the TICK_MS set to 499), two consecutive runs of the replication from the issue:

% node test-latency.js
target = 1000, actual = 1001
target = 1500, actual = 1516
target = 1990, actual = 2016
target = 1999, actual = 2017
target = 2000, actual = 2017
target = 2001, actual = 2017
target = 2500, actual = 2517
target = 3000, actual = 3017
target = 2990, actual = 3018
target = 2999, actual = 3018
target = 4000, actual = 4018
target = 5000, actual = 5019

followed by

node test-latency.js
target = 1000, actual = 1501
target = 1500, actual = 1519
target = 1990, actual = 2020
target = 1999, actual = 2020
target = 2000, actual = 2020
target = 2001, actual = 2020
target = 2500, actual = 2521
target = 3000, actual = 3021
target = 2990, actual = 3022
target = 2999, actual = 3022
target = 4000, actual = 4022
target = 5000, actual = 5022

Note the 1000ms timer fired much later the second run.

To help with very-short timeouts, I could keep the fallback to regular setTimeout at 1000ms as it was previously? Or do nothing here. Let me know :)

@mweberxyz
Copy link
Contributor Author

@mcollina @ronag I would be more comfortable increasing the minimum timeout to use the fast timers implementation to >1000ms, okay to push that small tweak?

@mweberxyz mweberxyz requested a review from ronag April 22, 2024 17:14
@ronag ronag merged commit 2e3463c into nodejs:main Apr 22, 2024
26 checks passed
@github-actions github-actions bot mentioned this pull request Apr 23, 2024
kodiakhq bot pushed a commit to X-oss-byte/Nextjs that referenced this pull request Apr 30, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [undici](https://undici.nodejs.org) ([source](https://togithub.com/nodejs/undici)) | [`6.14.1` -> `6.15.0`](https://renovatebot.com/diffs/npm/undici/6.11.1/6.15.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/6.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/6.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/undici/6.11.1/6.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/6.11.1/6.15.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nodejs/undici (undici)</summary>

### [`v6.15.0`](https://togithub.com/nodejs/undici/releases/tag/v6.15.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.1...v6.15.0)

#### What's Changed

-   Expose EnvHttpProxyAgent to Node.js core bundle, so it can be turned … by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3148
-   test: add headerslist copy check by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3156
-   chore: ensure automated v6 release compared to v6 by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3149
-   fetch: do not leak signal listeners by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3158
-   fix: request cache mode is not the same as request mode by [@&#8203;tsibley](https://togithub.com/tsibley) in [nodejs/undici#3151
-   fetch: don't re-lowercase HeadersList by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3159
-   fix casing issue when cloning Headers object by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3160
-   build(deps): bump node from `6d0f18a` to `db8772d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3163
-   fix header cloning bug by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3162
-   chore: change bench naming for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3165
-   expose WebSocket related events in node bundle by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3167
-   feat: add support for if-match on retry handler by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3144
-   fix: correct firing order of abort events by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3169
-   create fast MessageEvent by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3170
-   chore: add explicitly [@&#8203;fastify/busboy](https://togithub.com/fastify/busboy) by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3172
-   chore: remove sinon as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3171
-   webidl changes by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3175
-   preserve dictionary key name in webidl errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3176

#### New Contributors

-   [@&#8203;tsibley](https://togithub.com/tsibley) made their first contribution in [nodejs/undici#3151

**Full Changelog**: nodejs/undici@v6.14.1...v6.15.0

### [`v6.14.1`](https://togithub.com/nodejs/undici/releases/tag/v6.14.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.0...v6.14.1)

#### What's Changed

-   fix: tweak keep-alive timeout implementation by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3145
-   build(deps-dev): bump borp from 0.11.0 to 0.12.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3153
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3154
-   fix(EnvHttpProxyAgent): prefer lowercase env vars by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#3152

**Full Changelog**: nodejs/undici@v6.14.0...v6.14.1

### [`v6.14.0`](https://togithub.com/nodejs/undici/releases/tag/v6.14.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.13.0...v6.14.0)

#### What's Changed

-   bench: enable benchmarks for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3100
-   perf: improve performance of isomorphicEncode by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3101
-   util: remove isReadableAborted by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3104
-   fix(types): The second parameter of EventSource is optional by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3106
-   fix: onConnect types by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3116
-   add dispatcher option to EventSource by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3119
-   core: improve parseURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3102
-   test: increase coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3121
-   docs: add directions to run docs and benchmarks by [@&#8203;FatumaA](https://togithub.com/FatumaA) in [nodejs/undici#3092
-   perf: avoid unnecessary clone by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3117
-   build(deps-dev): bump borp from 0.10.0 to 0.11.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3126
-   drop node support for < v18.17.0 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3125
-   test: improve test and ci performance by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3135
-   Added EnvHttpProxyAgent to support HTTP_PROXY by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#2994
-   fetch: Change wording of "Body is unusable" error by [@&#8203;nzakas](https://togithub.com/nzakas) in [nodejs/undici#3105
-   perf: use class instead of object literals with getters by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3138
-   fix: unhandled exception or failing error body by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3137
-   reuse realm for Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3142
-   fix([H2-#&#8203;3140](https://togithub.com/H2-/undici/issues/3140)): abort requets upon GOAWAY by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3143
-   don't store realm on Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3146
-   improve: wasm build by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3074

#### New Contributors

-   [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) made their first contribution in [nodejs/undici#2994
-   [@&#8203;nzakas](https://togithub.com/nzakas) made their first contribution in [nodejs/undici#3105

**Full Changelog**: nodejs/undici@v6.13.0...v6.14.0

### [`v6.13.0`](https://togithub.com/nodejs/undici/releases/tag/v6.13.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.12.0...v6.13.0)

#### What's Changed

-   build(deps): bump node from `9696b26` to `ad255c6` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3073
-   test: remove only by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3077
-   fix: defer errors with setImmediate by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3081
-   improve DecoratorHandler by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3079
-   chore: removed unused escapeFormDataName by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3084
-   Mention option to pass streams into FormData by [@&#8203;JaoodxD](https://togithub.com/JaoodxD) in [nodejs/undici#3086
-   fetch: improve performance of isValidEncodedURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3090
-   optimize utf8Decode by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3085
-   refactor: h2 refactoring by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3082
-   Skip the creation of a transform stream in fetch by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3093
-   fetch: improve performance of urlHasHttpsScheme by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3094
-   fetch: avoid creation of an intermediary ReadableStream by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3095
-   test: duplicate jest unspecific tests to native runner by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3075
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3096
-   fetch: improve performance of isValidHeaderValue by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3098
-   chore: automate releases with pr by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3089

#### New Contributors

-   [@&#8203;github-actions](https://togithub.com/github-actions) made their first contribution in [nodejs/undici#3099

**Full Changelog**: nodejs/undici@v6.12.0...v6.13.0

### [`v6.12.0`](https://togithub.com/nodejs/undici/releases/tag/v6.12.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.11.1...v6.12.0)

#### What's Changed

-   fix: broken test by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3045
-   fix: http2 header parsing by [@&#8203;climba03003](https://togithub.com/climba03003) in [nodejs/undici#3047
-   types: fix Request.refererPolicy and RequestInit.refererPolicy are incompatible by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3039
-   fix(types): onHeaders always takes headers as an array of buffer by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3050
-   fix: ProxyAgent causes request.headers.host to be forcibly reset by [@&#8203;1zilc](https://togithub.com/1zilc) in [nodejs/undici#3026
-   fallback to Buffer.isUtf8 on platforms without icu by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3006
-   build(deps): bump github/codeql-action from 3.24.6 to 3.24.9 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3037
-   build(deps): bump actions/dependency-review-action from 4.1.3 to 4.2.5 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3035
-   build(deps): bump node from `577f8eb` to `87524df` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3055
-   build(deps): bump node from `87524df` to `9696b26` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3058
-   fetch: Block ports 4190 & 6679 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3059
-   test: activate testing for interceptors and cache by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3061
-   cache: improve test coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3063
-   feat: modernize fuzzing by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3060
-   fix: request abort by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3056
-   fix: signal handling by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3053
-   fix(H2): handle goaway properly by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3057
-   test: client, set body to null if bigger than CHUNK_LIMIT by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3064
-   mock: improve mock interceptor by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3062
-   fix: bad client destroy on servername change by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3066
-   perf: improve isBlobLike by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3070
-   test: add sanity check for llhttp wasm files by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3068

#### New Contributors

-   [@&#8203;zbinlin](https://togithub.com/zbinlin) made their first contribution in [nodejs/undici#3039
-   [@&#8203;1zilc](https://togithub.com/1zilc) made their first contribution in [nodejs/undici#3026

**Full Changelog**: nodejs/undici@v6.11.1...v6.12.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/X-oss-byte/Nextjs).
kodiakhq bot pushed a commit to X-oss-byte/Nextjs that referenced this pull request May 8, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [undici](https://undici.nodejs.org) ([source](https://togithub.com/nodejs/undici)) | [`6.15.0` -> `6.16.0`](https://renovatebot.com/diffs/npm/undici/6.11.1/6.16.0) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/6.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/6.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/undici/6.11.1/6.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/6.11.1/6.16.0?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nodejs/undici (undici)</summary>

### [`v6.16.0`](https://togithub.com/nodejs/undici/releases/tag/v6.16.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.15.0...v6.16.0)

#### What's Changed

-   add index to sequence converter errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3178
-   build(deps-dev): bump borp from 0.12.0 to 0.13.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3179
-   build(deps): bump node from 21-alpine3.19 to 22-alpine3.19 in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3180
-   build(deps): bump superagent from 8.1.2 to 9.0.2 in /benchmarks by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3181
-   fix: keep raw header name by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3183
-   fix(fetch): improve Headers and Request type-compatibility by [@&#8203;kettanaito](https://togithub.com/kettanaito) in [nodejs/undici#1964
-   fix 3 mimesniff tests by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3185
-   build(deps): bump hendrikmuhs/ccache-action from 1.2.12 to 1.2.13 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3187
-   build(deps): bump codecov/codecov-action from 4.1.1 to 4.3.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3191
-   build(deps): bump github/codeql-action from 3.24.9 to 3.25.3 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3192
-   build(deps): bump actions/dependency-review-action from 4.2.5 to 4.3.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3189
-   build(deps): bump step-security/harden-runner from 2.7.0 to 2.7.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3188
-   build(deps): bump actions/upload-artifact from 4.3.1 to 4.3.3 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3190
-   build(deps): bump node from `9459e24` to `487dc5d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3195
-   perf: avoid spread in makeRequest() by [@&#8203;gunjam](https://togithub.com/gunjam) in [nodejs/undici#3193
-   refactor: code cleanup by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3194
-   fix parsing when receiving empty body websocket by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3205
-   fix: MockResponseCallbackOptions type by [@&#8203;merojosa](https://togithub.com/merojosa) in [nodejs/undici#2951
-   docs(proxy): fix typo by [@&#8203;kanadgupta](https://togithub.com/kanadgupta) in [nodejs/undici#3207
-   fix websocket receiving an invalid utf-8 in close frame by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3206
-   perf: avoid setImmediate if body is reading by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3210
-   fix: request abort signal by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3209
-   fix: remove abort handler on close by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3211
-   fix: pass abort function by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3212
-   websocket: 200x faster generate mask by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3204
-   use FinalizationRegistry to cancel the body if response is collected by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3199
-   websocket: don't clone buffer if it's not needed. by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3214
-   websocket: use FastBuffer by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3213

#### New Contributors

-   [@&#8203;kettanaito](https://togithub.com/kettanaito) made their first contribution in [nodejs/undici#1964
-   [@&#8203;gunjam](https://togithub.com/gunjam) made their first contribution in [nodejs/undici#3193
-   [@&#8203;merojosa](https://togithub.com/merojosa) made their first contribution in [nodejs/undici#2951
-   [@&#8203;kanadgupta](https://togithub.com/kanadgupta) made their first contribution in [nodejs/undici#3207

**Full Changelog**: nodejs/undici@v6.15.0...v6.16.0

### [`v6.15.0`](https://togithub.com/nodejs/undici/releases/tag/v6.15.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.1...v6.15.0)

#### What's Changed

-   Expose EnvHttpProxyAgent to Node.js core bundle, so it can be turned … by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3148
-   test: add headerslist copy check by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3156
-   chore: ensure automated v6 release compared to v6 by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3149
-   fetch: do not leak signal listeners by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3158
-   fix: request cache mode is not the same as request mode by [@&#8203;tsibley](https://togithub.com/tsibley) in [nodejs/undici#3151
-   fetch: don't re-lowercase HeadersList by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3159
-   fix casing issue when cloning Headers object by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3160
-   build(deps): bump node from `6d0f18a` to `db8772d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3163
-   fix header cloning bug by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3162
-   chore: change bench naming for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3165
-   expose WebSocket related events in node bundle by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3167
-   feat: add support for if-match on retry handler by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3144
-   fix: correct firing order of abort events by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3169
-   create fast MessageEvent by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3170
-   chore: add explicitly [@&#8203;fastify/busboy](https://togithub.com/fastify/busboy) by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3172
-   chore: remove sinon as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3171
-   webidl changes by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3175
-   preserve dictionary key name in webidl errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3176

#### New Contributors

-   [@&#8203;tsibley](https://togithub.com/tsibley) made their first contribution in [nodejs/undici#3151

**Full Changelog**: nodejs/undici@v6.14.1...v6.15.0

### [`v6.14.1`](https://togithub.com/nodejs/undici/releases/tag/v6.14.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.0...v6.14.1)

#### What's Changed

-   fix: tweak keep-alive timeout implementation by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3145
-   build(deps-dev): bump borp from 0.11.0 to 0.12.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3153
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3154
-   fix(EnvHttpProxyAgent): prefer lowercase env vars by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#3152

**Full Changelog**: nodejs/undici@v6.14.0...v6.14.1

### [`v6.14.0`](https://togithub.com/nodejs/undici/releases/tag/v6.14.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.13.0...v6.14.0)

#### What's Changed

-   bench: enable benchmarks for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3100
-   perf: improve performance of isomorphicEncode by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3101
-   util: remove isReadableAborted by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3104
-   fix(types): The second parameter of EventSource is optional by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3106
-   fix: onConnect types by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3116
-   add dispatcher option to EventSource by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3119
-   core: improve parseURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3102
-   test: increase coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3121
-   docs: add directions to run docs and benchmarks by [@&#8203;FatumaA](https://togithub.com/FatumaA) in [nodejs/undici#3092
-   perf: avoid unnecessary clone by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3117
-   build(deps-dev): bump borp from 0.10.0 to 0.11.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3126
-   drop node support for < v18.17.0 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3125
-   test: improve test and ci performance by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3135
-   Added EnvHttpProxyAgent to support HTTP_PROXY by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#2994
-   fetch: Change wording of "Body is unusable" error by [@&#8203;nzakas](https://togithub.com/nzakas) in [nodejs/undici#3105
-   perf: use class instead of object literals with getters by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3138
-   fix: unhandled exception or failing error body by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3137
-   reuse realm for Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3142
-   fix([H2-#&#8203;3140](https://togithub.com/H2-/undici/issues/3140)): abort requets upon GOAWAY by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3143
-   don't store realm on Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3146
-   improve: wasm build by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3074

#### New Contributors

-   [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) made their first contribution in [nodejs/undici#2994
-   [@&#8203;nzakas](https://togithub.com/nzakas) made their first contribution in [nodejs/undici#3105

**Full Changelog**: nodejs/undici@v6.13.0...v6.14.0

### [`v6.13.0`](https://togithub.com/nodejs/undici/releases/tag/v6.13.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.12.0...v6.13.0)

#### What's Changed

-   build(deps): bump node from `9696b26` to `ad255c6` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3073
-   test: remove only by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3077
-   fix: defer errors with setImmediate by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3081
-   improve DecoratorHandler by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3079
-   chore: removed unused escapeFormDataName by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3084
-   Mention option to pass streams into FormData by [@&#8203;JaoodxD](https://togithub.com/JaoodxD) in [nodejs/undici#3086
-   fetch: improve performance of isValidEncodedURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3090
-   optimize utf8Decode by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3085
-   refactor: h2 refactoring by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3082
-   Skip the creation of a transform stream in fetch by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3093
-   fetch: improve performance of urlHasHttpsScheme by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3094
-   fetch: avoid creation of an intermediary ReadableStream by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3095
-   test: duplicate jest unspecific tests to native runner by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3075
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3096
-   fetch: improve performance of isValidHeaderValue by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3098
-   chore: automate releases with pr by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3089

#### New Contributors

-   [@&#8203;github-actions](https://togithub.com/github-actions) made their first contribution in [nodejs/undici#3099

**Full Changelog**: nodejs/undici@v6.12.0...v6.13.0

### [`v6.12.0`](https://togithub.com/nodejs/undici/releases/tag/v6.12.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.11.1...v6.12.0)

#### What's Changed

-   fix: broken test by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3045
-   fix: http2 header parsing by [@&#8203;climba03003](https://togithub.com/climba03003) in [nodejs/undici#3047
-   types: fix Request.refererPolicy and RequestInit.refererPolicy are incompatible by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3039
-   fix(types): onHeaders always takes headers as an array of buffer by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3050
-   fix: ProxyAgent causes request.headers.host to be forcibly reset by [@&#8203;1zilc](https://togithub.com/1zilc) in [nodejs/undici#3026
-   fallback to Buffer.isUtf8 on platforms without icu by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3006
-   build(deps): bump github/codeql-action from 3.24.6 to 3.24.9 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3037
-   build(deps): bump actions/dependency-review-action from 4.1.3 to 4.2.5 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3035
-   build(deps): bump node from `577f8eb` to `87524df` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3055
-   build(deps): bump node from `87524df` to `9696b26` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3058
-   fetch: Block ports 4190 & 6679 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3059
-   test: activate testing for interceptors and cache by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3061
-   cache: improve test coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3063
-   feat: modernize fuzzing by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3060
-   fix: request abort by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3056
-   fix: signal handling by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3053
-   fix(H2): handle goaway properly by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3057
-   test: client, set body to null if bigger than CHUNK_LIMIT by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3064
-   mock: improve mock interceptor by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3062
-   fix: bad client destroy on servername change by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3066
-   perf: improve isBlobLike by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3070
-   test: add sanity check for llhttp wasm files by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3068

#### New Contributors

-   [@&#8203;zbinlin](https://togithub.com/zbinlin) made their first contribution in [nodejs/undici#3039
-   [@&#8203;1zilc](https://togithub.com/1zilc) made their first contribution in [nodejs/undici#3026

**Full Changelog**: nodejs/undici@v6.11.1...v6.12.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/X-oss-byte/Nextjs).
kodiakhq bot pushed a commit to X-oss-byte/Nextjs that referenced this pull request May 10, 2024
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [undici](https://undici.nodejs.org) ([source](https://togithub.com/nodejs/undici)) | [`6.16.0` -> `6.16.1`](https://renovatebot.com/diffs/npm/undici/6.11.1/6.16.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/undici/6.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/undici/6.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/undici/6.11.1/6.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/undici/6.11.1/6.16.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>nodejs/undici (undici)</summary>

### [`v6.16.1`](https://togithub.com/nodejs/undici/compare/v6.16.0...a613753c03b78ea11dbf884aaafc067895a580e1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.16.0...v6.16.1)

### [`v6.16.0`](https://togithub.com/nodejs/undici/releases/tag/v6.16.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.15.0...v6.16.0)

#### What's Changed

-   add index to sequence converter errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3178
-   build(deps-dev): bump borp from 0.12.0 to 0.13.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3179
-   build(deps): bump node from 21-alpine3.19 to 22-alpine3.19 in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3180
-   build(deps): bump superagent from 8.1.2 to 9.0.2 in /benchmarks by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3181
-   fix: keep raw header name by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3183
-   fix(fetch): improve Headers and Request type-compatibility by [@&#8203;kettanaito](https://togithub.com/kettanaito) in [nodejs/undici#1964
-   fix 3 mimesniff tests by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3185
-   build(deps): bump hendrikmuhs/ccache-action from 1.2.12 to 1.2.13 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3187
-   build(deps): bump codecov/codecov-action from 4.1.1 to 4.3.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3191
-   build(deps): bump github/codeql-action from 3.24.9 to 3.25.3 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3192
-   build(deps): bump actions/dependency-review-action from 4.2.5 to 4.3.2 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3189
-   build(deps): bump step-security/harden-runner from 2.7.0 to 2.7.1 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3188
-   build(deps): bump actions/upload-artifact from 4.3.1 to 4.3.3 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3190
-   build(deps): bump node from `9459e24` to `487dc5d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3195
-   perf: avoid spread in makeRequest() by [@&#8203;gunjam](https://togithub.com/gunjam) in [nodejs/undici#3193
-   refactor: code cleanup by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3194
-   fix parsing when receiving empty body websocket by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3205
-   fix: MockResponseCallbackOptions type by [@&#8203;merojosa](https://togithub.com/merojosa) in [nodejs/undici#2951
-   docs(proxy): fix typo by [@&#8203;kanadgupta](https://togithub.com/kanadgupta) in [nodejs/undici#3207
-   fix websocket receiving an invalid utf-8 in close frame by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3206
-   perf: avoid setImmediate if body is reading by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3210
-   fix: request abort signal by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3209
-   fix: remove abort handler on close by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3211
-   fix: pass abort function by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3212
-   websocket: 200x faster generate mask by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3204
-   use FinalizationRegistry to cancel the body if response is collected by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3199
-   websocket: don't clone buffer if it's not needed. by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3214
-   websocket: use FastBuffer by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3213

#### New Contributors

-   [@&#8203;kettanaito](https://togithub.com/kettanaito) made their first contribution in [nodejs/undici#1964
-   [@&#8203;gunjam](https://togithub.com/gunjam) made their first contribution in [nodejs/undici#3193
-   [@&#8203;merojosa](https://togithub.com/merojosa) made their first contribution in [nodejs/undici#2951
-   [@&#8203;kanadgupta](https://togithub.com/kanadgupta) made their first contribution in [nodejs/undici#3207

**Full Changelog**: nodejs/undici@v6.15.0...v6.16.0

### [`v6.15.0`](https://togithub.com/nodejs/undici/releases/tag/v6.15.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.1...v6.15.0)

#### What's Changed

-   Expose EnvHttpProxyAgent to Node.js core bundle, so it can be turned … by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3148
-   test: add headerslist copy check by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3156
-   chore: ensure automated v6 release compared to v6 by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3149
-   fetch: do not leak signal listeners by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3158
-   fix: request cache mode is not the same as request mode by [@&#8203;tsibley](https://togithub.com/tsibley) in [nodejs/undici#3151
-   fetch: don't re-lowercase HeadersList by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3159
-   fix casing issue when cloning Headers object by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3160
-   build(deps): bump node from `6d0f18a` to `db8772d` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3163
-   fix header cloning bug by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3162
-   chore: change bench naming for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3165
-   expose WebSocket related events in node bundle by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3167
-   feat: add support for if-match on retry handler by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3144
-   fix: correct firing order of abort events by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3169
-   create fast MessageEvent by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3170
-   chore: add explicitly [@&#8203;fastify/busboy](https://togithub.com/fastify/busboy) by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3172
-   chore: remove sinon as dev dependency by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3171
-   webidl changes by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3175
-   preserve dictionary key name in webidl errors by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3176

#### New Contributors

-   [@&#8203;tsibley](https://togithub.com/tsibley) made their first contribution in [nodejs/undici#3151

**Full Changelog**: nodejs/undici@v6.14.1...v6.15.0

### [`v6.14.1`](https://togithub.com/nodejs/undici/releases/tag/v6.14.1)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.14.0...v6.14.1)

#### What's Changed

-   fix: tweak keep-alive timeout implementation by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3145
-   build(deps-dev): bump borp from 0.11.0 to 0.12.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3153
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3154
-   fix(EnvHttpProxyAgent): prefer lowercase env vars by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#3152

**Full Changelog**: nodejs/undici@v6.14.0...v6.14.1

### [`v6.14.0`](https://togithub.com/nodejs/undici/releases/tag/v6.14.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.13.0...v6.14.0)

#### What's Changed

-   bench: enable benchmarks for h2 by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3100
-   perf: improve performance of isomorphicEncode by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3101
-   util: remove isReadableAborted by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3104
-   fix(types): The second parameter of EventSource is optional by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3106
-   fix: onConnect types by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3116
-   add dispatcher option to EventSource by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3119
-   core: improve parseURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3102
-   test: increase coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3121
-   docs: add directions to run docs and benchmarks by [@&#8203;FatumaA](https://togithub.com/FatumaA) in [nodejs/undici#3092
-   perf: avoid unnecessary clone by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3117
-   build(deps-dev): bump borp from 0.10.0 to 0.11.0 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3126
-   drop node support for < v18.17.0 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3125
-   test: improve test and ci performance by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3135
-   Added EnvHttpProxyAgent to support HTTP_PROXY by [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) in [nodejs/undici#2994
-   fetch: Change wording of "Body is unusable" error by [@&#8203;nzakas](https://togithub.com/nzakas) in [nodejs/undici#3105
-   perf: use class instead of object literals with getters by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3138
-   fix: unhandled exception or failing error body by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3137
-   reuse realm for Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3142
-   fix([H2-#&#8203;3140](https://togithub.com/H2-/undici/issues/3140)): abort requets upon GOAWAY by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3143
-   don't store realm on Request/Response by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3146
-   improve: wasm build by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3074

#### New Contributors

-   [@&#8203;10xLaCroixDrinker](https://togithub.com/10xLaCroixDrinker) made their first contribution in [nodejs/undici#2994
-   [@&#8203;nzakas](https://togithub.com/nzakas) made their first contribution in [nodejs/undici#3105

**Full Changelog**: nodejs/undici@v6.13.0...v6.14.0

### [`v6.13.0`](https://togithub.com/nodejs/undici/releases/tag/v6.13.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.12.0...v6.13.0)

#### What's Changed

-   build(deps): bump node from `9696b26` to `ad255c6` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3073
-   test: remove only by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3077
-   fix: defer errors with setImmediate by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3081
-   improve DecoratorHandler by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3079
-   chore: removed unused escapeFormDataName by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3084
-   Mention option to pass streams into FormData by [@&#8203;JaoodxD](https://togithub.com/JaoodxD) in [nodejs/undici#3086
-   fetch: improve performance of isValidEncodedURL by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3090
-   optimize utf8Decode by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3085
-   refactor: h2 refactoring by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3082
-   Skip the creation of a transform stream in fetch by [@&#8203;mcollina](https://togithub.com/mcollina) in [nodejs/undici#3093
-   fetch: improve performance of urlHasHttpsScheme by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3094
-   fetch: avoid creation of an intermediary ReadableStream by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3095
-   test: duplicate jest unspecific tests to native runner by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3075
-   build(deps): bump node from `ad255c6` to `6d0f18a` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3096
-   fetch: improve performance of isValidHeaderValue by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3098
-   chore: automate releases with pr by [@&#8203;mweberxyz](https://togithub.com/mweberxyz) in [nodejs/undici#3089

#### New Contributors

-   [@&#8203;github-actions](https://togithub.com/github-actions) made their first contribution in [nodejs/undici#3099

**Full Changelog**: nodejs/undici@v6.12.0...v6.13.0

### [`v6.12.0`](https://togithub.com/nodejs/undici/releases/tag/v6.12.0)

[Compare Source](https://togithub.com/nodejs/undici/compare/v6.11.1...v6.12.0)

#### What's Changed

-   fix: broken test by [@&#8203;tsctx](https://togithub.com/tsctx) in [nodejs/undici#3045
-   fix: http2 header parsing by [@&#8203;climba03003](https://togithub.com/climba03003) in [nodejs/undici#3047
-   types: fix Request.refererPolicy and RequestInit.refererPolicy are incompatible by [@&#8203;zbinlin](https://togithub.com/zbinlin) in [nodejs/undici#3039
-   fix(types): onHeaders always takes headers as an array of buffer by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3050
-   fix: ProxyAgent causes request.headers.host to be forcibly reset by [@&#8203;1zilc](https://togithub.com/1zilc) in [nodejs/undici#3026
-   fallback to Buffer.isUtf8 on platforms without icu by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3006
-   build(deps): bump github/codeql-action from 3.24.6 to 3.24.9 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3037
-   build(deps): bump actions/dependency-review-action from 4.1.3 to 4.2.5 by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3035
-   build(deps): bump node from `577f8eb` to `87524df` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3055
-   build(deps): bump node from `87524df` to `9696b26` in /build by [@&#8203;dependabot](https://togithub.com/dependabot) in [nodejs/undici#3058
-   fetch: Block ports 4190 & 6679 by [@&#8203;KhafraDev](https://togithub.com/KhafraDev) in [nodejs/undici#3059
-   test: activate testing for interceptors and cache by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3061
-   cache: improve test coverage by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3063
-   feat: modernize fuzzing by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3060
-   fix: request abort by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3056
-   fix: signal handling by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3053
-   fix(H2): handle goaway properly by [@&#8203;metcoder95](https://togithub.com/metcoder95) in [nodejs/undici#3057
-   test: client, set body to null if bigger than CHUNK_LIMIT by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3064
-   mock: improve mock interceptor by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3062
-   fix: bad client destroy on servername change by [@&#8203;ronag](https://togithub.com/ronag) in [nodejs/undici#3066
-   perf: improve isBlobLike by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3070
-   test: add sanity check for llhttp wasm files by [@&#8203;Uzlopak](https://togithub.com/Uzlopak) in [nodejs/undici#3068

#### New Contributors

-   [@&#8203;zbinlin](https://togithub.com/zbinlin) made their first contribution in [nodejs/undici#3039
-   [@&#8203;1zilc](https://togithub.com/1zilc) made their first contribution in [nodejs/undici#3026

**Full Changelog**: nodejs/undici@v6.11.1...v6.12.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/X-oss-byte/Nextjs).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Race condition at-or-near keep-alive expiration
4 participants