diff --git a/lib/core/connection/connect.js b/lib/core/connection/connect.js index 92a08490a2..027ee2997d 100644 --- a/lib/core/connection/connect.js +++ b/lib/core/connection/connect.js @@ -281,10 +281,9 @@ function makeConnection(family, options, _callback) { const errorEvents = ['error', 'close', 'timeout', 'parseError', 'connect']; function errorHandler(eventName) { return err => { - if (err == null || err === false) err = true; errorEvents.forEach(event => socket.removeAllListeners(event)); socket.removeListener('connect', connectHandler); - callback(new MongoNetworkError(err.message), eventName); + callback(connectionFailureError(eventName, err), eventName); }; } @@ -355,4 +354,17 @@ function authenticate(conn, credentials, callback) { }); } +function connectionFailureError(type, err) { + switch (type) { + case 'error': + return new MongoNetworkError(err); + case 'timeout': + return new MongoNetworkError(`connection timed out`); + case 'close': + return new MongoNetworkError(`connection closed`); + default: + return new MongoNetworkError(`unknown network error`); + } +} + module.exports = connect;