@@ -20,34 +20,14 @@ function connect(options, callback) {
20
20
AUTH_PROVIDERS = defaultAuthProviders ( options . bson ) ;
21
21
}
22
22
23
- if ( options . family !== void 0 ) {
24
- makeConnection ( options . family , options , ( err , socket ) => {
25
- if ( err ) {
26
- callback ( err , socket ) ; // in the error case, `socket` is the originating error event name
27
- return ;
28
- }
29
-
30
- performInitialHandshake ( new ConnectionType ( socket , options ) , options , callback ) ;
31
- } ) ;
32
-
33
- return ;
34
- }
35
-
36
- return makeConnection ( 6 , options , ( err , ipv6Socket ) => {
23
+ const family = options . family !== void 0 ? options . family : 0 ;
24
+ makeConnection ( family , options , ( err , socket ) => {
37
25
if ( err ) {
38
- makeConnection ( 0 , options , ( err , ipv4Socket ) => {
39
- if ( err ) {
40
- callback ( err , ipv4Socket ) ; // in the error case, `ipv4Socket` is the originating error event name
41
- return ;
42
- }
43
-
44
- performInitialHandshake ( new ConnectionType ( ipv4Socket , options ) , options , callback ) ;
45
- } ) ;
46
-
26
+ callback ( err , socket ) ; // in the error case, `socket` is the originating error event name
47
27
return ;
48
28
}
49
29
50
- performInitialHandshake ( new ConnectionType ( ipv6Socket , options ) , options , callback ) ;
30
+ performInitialHandshake ( new ConnectionType ( socket , options ) , options , callback ) ;
51
31
} ) ;
52
32
}
53
33
@@ -238,6 +218,7 @@ function parseSslOptions(family, options) {
238
218
return result ;
239
219
}
240
220
221
+ const SOCKET_ERROR_EVENTS = new Set ( [ 'error' , 'close' , 'timeout' , 'parseError' ] ) ;
241
222
function makeConnection ( family , options , _callback ) {
242
223
const useSsl = typeof options . ssl === 'boolean' ? options . ssl : false ;
243
224
const keepAlive = typeof options . keepAlive === 'boolean' ? options . keepAlive : true ;
@@ -279,17 +260,16 @@ function makeConnection(family, options, _callback) {
279
260
socket . setTimeout ( connectionTimeout ) ;
280
261
socket . setNoDelay ( noDelay ) ;
281
262
282
- const errorEvents = [ 'error' , 'close' , 'timeout' , 'parseError' ] ;
283
263
function errorHandler ( eventName ) {
284
264
return err => {
285
- errorEvents . forEach ( event => socket . removeAllListeners ( event ) ) ;
265
+ SOCKET_ERROR_EVENTS . forEach ( event => socket . removeAllListeners ( event ) ) ;
286
266
socket . removeListener ( 'connect' , connectHandler ) ;
287
267
callback ( connectionFailureError ( eventName , err ) , eventName ) ;
288
268
} ;
289
269
}
290
270
291
271
function connectHandler ( ) {
292
- errorEvents . forEach ( event => socket . removeAllListeners ( event ) ) ;
272
+ SOCKET_ERROR_EVENTS . forEach ( event => socket . removeAllListeners ( event ) ) ;
293
273
if ( socket . authorizationError && rejectUnauthorized ) {
294
274
return callback ( socket . authorizationError ) ;
295
275
}
@@ -298,10 +278,7 @@ function makeConnection(family, options, _callback) {
298
278
callback ( null , socket ) ;
299
279
}
300
280
301
- socket . once ( 'error' , errorHandler ( 'error' ) ) ;
302
- socket . once ( 'close' , errorHandler ( 'close' ) ) ;
303
- socket . once ( 'timeout' , errorHandler ( 'timeout' ) ) ;
304
- socket . once ( 'parseError' , errorHandler ( 'parseError' ) ) ;
281
+ SOCKET_ERROR_EVENTS . forEach ( event => socket . once ( event , errorHandler ( event ) ) ) ;
305
282
socket . once ( 'connect' , connectHandler ) ;
306
283
}
307
284
0 commit comments