diff --git a/src/cmap/connect.ts b/src/cmap/connect.ts index 938b524e082..9efe2461070 100644 --- a/src/cmap/connect.ts +++ b/src/cmap/connect.ts @@ -386,15 +386,35 @@ export async function makeSocket(options: MakeConnectionOptions): Promise resolve(socket)) - .once('error', error => reject(connectionFailureError('error', error))) - .once('timeout', () => reject(connectionFailureError('timeout'))) - .once('close', () => reject(connectionFailureError('close'))); + .once('error', cause => + reject(new MongoNetworkError(MongoError.buildErrorMessage(cause), { cause })) + ) + .once('timeout', () => { + reject( + new MongoNetworkTimeoutError( + `Socket '${connectEvent}' timed out after ${(performance.now() - start) | 0}ms (connectTimeoutMS: ${connectTimeoutMS})` + ) + ); + }) + .once('close', () => + reject( + new MongoNetworkError( + `Socket closed after ${(performance.now() - start) | 0} during connection establishment` + ) + ) + ); if (options.cancellationToken != null) { - cancellationHandler = () => reject(connectionFailureError('cancel')); + cancellationHandler = () => + reject( + new MongoNetworkError( + `Socket connection establishment was cancelled after ${(performance.now() - start) | 0}` + ) + ); options.cancellationToken.once('cancel', cancellationHandler); } } @@ -447,9 +467,11 @@ async function makeSocks5Connection(options: MakeConnectionOptions): Promise