Skip to content

fix(agent-base): dispatch queued requests after connection failures - #439

Open
rajanpanth wants to merge 1 commit into
TooTallNate:mainfrom
rajanpanth:fix/issue-427-drain-failed-connections
Open

fix(agent-base): dispatch queued requests after connection failures#439
rajanpanth wants to merge 1 commit into
TooTallNate:mainfrom
rajanpanth:fix/issue-427-drain-failed-connections

Conversation

@rajanpanth

Copy link
Copy Markdown

Summary

  • dispatch the next same-origin queued request after an asynchronous Agent connection failure releases socket capacity
  • add deterministic regression coverage for repeated connection failures with maxSockets: 2
  • add a patch changeset for agent-base

Fixes #427.

Problem

When an asynchronous Agent connection attempt rejects, Agent Base removes its placeholder socket but does not enter Node's normal socket-close queue-draining lifecycle.

With four same-origin requests and maxSockets: 2, the first two connection attempts reject while the other two requests remain queued indefinitely.

Change

After removing the failed placeholder, dispatch the next same-origin queued request when capacity is available. Requests are shifted before dispatch, so repeated failures drain the queue without redispatching the same request.

Validation

  • focused issue regression on Node 24 — passed
  • Agent Base package suite on Node 24 — 17/17 passed
  • Agent Base package suite on Node 22.16 — 17/17 passed
  • TypeScript build — passed
  • ESLint — passed
  • targeted Prettier validation — passed
  • changeset validation — passed
  • git show --check — passed

Node 20 was not tested locally because it is not installed.

The aggregate Turbo command resolves global pnpm 11.14 instead of the repository-pinned pnpm 10.30.3. Repository-wide formatting also reports 123 existing Windows CRLF differences. All changed files pass their targeted validation.

A separate PAC test fixture is locally protected with skip-worktree because Windows Defender blocks access. That fixture is unrelated to this change and is absent from the commit and pull-request diff.

Compatibility

No public API, Node support, dependency, lockfile, or TypeScript declaration change is included.

@changeset-bot

changeset-bot Bot commented Jul 22, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 8fd1eb2

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 6 packages
Name Type
agent-base Patch
http-proxy-agent Patch
https-proxy-agent Patch
pac-proxy-agent Patch
proxy-agent Patch
socks-proxy-agent Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@rajanpanth

Copy link
Copy Markdown
Author

Friendly follow-up on this PR 👋

When you have a moment, could you please take a look? I’m happy to rebase, update tests, or make any requested changes.

Thanks!

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.

agent-base: requests queued past maxSockets are stranded forever when connections fail

1 participant