@@ -334,16 +334,21 @@ function createServer(mongoClient, options, callback) {
334334 // Propagate the events to the client
335335 const collectedEvents = collectEvents ( mongoClient , servers [ 0 ] ) ;
336336
337+ const server = servers [ 0 ] ;
338+
337339 // Connect to topology
338- servers [ 0 ] . connect ( options , ( err , topology ) => {
339- if ( err ) return callback ( err ) ;
340+ server . connect ( options , ( err , topology ) => {
341+ if ( err ) {
342+ server . close ( true ) ;
343+ return callback ( err ) ;
344+ }
340345 // Clear out all the collected event listeners
341- clearAllEvents ( servers [ 0 ] ) ;
346+ clearAllEvents ( server ) ;
342347
343348 // Relay all the events
344- relayEvents ( mongoClient , servers [ 0 ] ) ;
349+ relayEvents ( mongoClient , server ) ;
345350 // Add listeners
346- addListeners ( mongoClient , servers [ 0 ] ) ;
351+ addListeners ( mongoClient , server ) ;
347352 // Check if we are really speaking to a mongos
348353 const ismaster = topology . lastIsMaster ( ) ;
349354
@@ -388,7 +393,10 @@ function createTopology(mongoClient, topologyType, options, callback) {
388393
389394 // Open the connection
390395 topology . connect ( options , ( err , topology ) => {
391- if ( err ) return callback ( err ) ;
396+ if ( err ) {
397+ topology . close ( true ) ;
398+ return callback ( err ) ;
399+ }
392400
393401 assignTopology ( mongoClient , topology ) ;
394402 callback ( null , topology ) ;
0 commit comments