From 205dc2d055158e0d7bdbd45782dc612cf1040ca0 Mon Sep 17 00:00:00 2001 From: Neal Beeken Date: Tue, 4 Mar 2025 13:13:48 -0500 Subject: [PATCH] fix(NODE-6803): kms proxy socket creates unhandled rejection --- src/client-side-encryption/state_machine.ts | 27 ++++++++++++--------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/src/client-side-encryption/state_machine.ts b/src/client-side-encryption/state_machine.ts index c45fdf1f093..51f0dfd699e 100644 --- a/src/client-side-encryption/state_machine.ts +++ b/src/client-side-encryption/state_machine.ts @@ -352,7 +352,7 @@ export class StateMachine { const message = request.message; const buffer = new BufferPool(); - const netSocket: net.Socket = new net.Socket(); + let netSocket: net.Socket; let socket: tls.TLSSocket; function destroySockets() { @@ -388,26 +388,31 @@ export class StateMachine { } } - const { - promise: willConnect, - reject: rejectOnNetSocketError, - resolve: resolveOnNetSocketConnect - } = promiseWithResolvers(); - netSocket - .once('error', err => rejectOnNetSocketError(onerror(err))) - .once('close', () => rejectOnNetSocketError(onclose())) - .once('connect', () => resolveOnNetSocketConnect()); - let abortListener; try { if (this.options.proxyOptions && this.options.proxyOptions.proxyHost) { + netSocket = new net.Socket(); + + const { + promise: willConnect, + reject: rejectOnNetSocketError, + resolve: resolveOnNetSocketConnect + } = promiseWithResolvers(); + + netSocket + .once('error', err => rejectOnNetSocketError(onerror(err))) + .once('close', () => rejectOnNetSocketError(onclose())) + .once('connect', () => resolveOnNetSocketConnect()); + const netSocketOptions = { ...socketOptions, host: this.options.proxyOptions.proxyHost, port: this.options.proxyOptions.proxyPort || 1080 }; + netSocket.connect(netSocketOptions); + await willConnect; try {