From 6332c0e8c5d419e6bfda012a658b53b091f38741 Mon Sep 17 00:00:00 2001 From: Anna Henningsen Date: Wed, 14 Aug 2024 18:07:46 +0200 Subject: [PATCH] Handle exceptions from agent addRequest() `tls.createSecureContext()` can throw exceptions, so `.addRequest()` can throw exceptions as well. --- .changeset/pretty-terms-exercise.md | 5 +++++ packages/agent-base/src/index.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 .changeset/pretty-terms-exercise.md diff --git a/.changeset/pretty-terms-exercise.md b/.changeset/pretty-terms-exercise.md new file mode 100644 index 00000000..f4642d44 --- /dev/null +++ b/.changeset/pretty-terms-exercise.md @@ -0,0 +1,5 @@ +--- +'agent-base': patch +--- + +Handle exceptions caused by Agent.addRequest() diff --git a/packages/agent-base/src/index.ts b/packages/agent-base/src/index.ts index fcf2b57c..7ec482ac 100644 --- a/packages/agent-base/src/index.ts +++ b/packages/agent-base/src/index.ts @@ -154,8 +154,12 @@ export abstract class Agent extends http.Agent { (socket) => { this.decrementSockets(name, fakeSocket); if (socket instanceof http.Agent) { - // @ts-expect-error `addRequest()` isn't defined in `@types/node` - return socket.addRequest(req, connectOpts); + try { + // @ts-expect-error `addRequest()` isn't defined in `@types/node` + return socket.addRequest(req, connectOpts); + } catch (err: unknown) { + return cb(err as Error); + } } this[INTERNAL].currentSocket = socket; // @ts-expect-error `createSocket()` isn't defined in `@types/node`