diff --git a/lib/core/sdam/server.js b/lib/core/sdam/server.js index 46ce8d2c34..0f00363ba4 100644 --- a/lib/core/sdam/server.js +++ b/lib/core/sdam/server.js @@ -166,6 +166,7 @@ class Server extends EventEmitter { relayEvents(this.s.pool, this, ['commandStarted', 'commandSucceeded', 'commandFailed']); stateTransition(this, STATE_CONNECTING); + this.s.pool.connect(connectEventHandler(this)); } @@ -465,10 +466,14 @@ function executeWriteOperation(args, options, callback) { function connectEventHandler(server) { return function(err, conn) { + if (server.s.state === STATE_CLOSING || server.s.state === STATE_CLOSED) { + return; + } + if (err) { server.emit('error', new MongoNetworkError(err)); - stateTransition(this, STATE_CLOSED); + stateTransition(server, STATE_CLOSED); server.emit('close'); return; }