@@ -172,9 +172,8 @@ class Socket extends Emitter {
172
172
transport = "websocket" ;
173
173
} else if ( 0 === this . transports . length ) {
174
174
// Emit error on next tick so it can be listened to
175
- const self = this ;
176
- setTimeout ( function ( ) {
177
- self . emit ( "error" , "No transports available" ) ;
175
+ setTimeout ( ( ) => {
176
+ this . emit ( "error" , "No transports available" ) ;
178
177
} , 0 ) ;
179
178
return ;
180
179
} else {
@@ -203,7 +202,6 @@ class Socket extends Emitter {
203
202
*/
204
203
setTransport ( transport ) {
205
204
debug ( "setting transport %s" , transport . name ) ;
206
- const self = this ;
207
205
208
206
if ( this . transport ) {
209
207
debug ( "clearing existing transport %s" , this . transport . name ) ;
@@ -215,17 +213,11 @@ class Socket extends Emitter {
215
213
216
214
// set up transport listeners
217
215
transport
218
- . on ( "drain" , function ( ) {
219
- self . onDrain ( ) ;
220
- } )
221
- . on ( "packet" , function ( packet ) {
222
- self . onPacket ( packet ) ;
223
- } )
224
- . on ( "error" , function ( e ) {
225
- self . onError ( e ) ;
226
- } )
227
- . on ( "close" , function ( ) {
228
- self . onClose ( "transport close" ) ;
216
+ . on ( "drain" , this . onDrain . bind ( this ) )
217
+ . on ( "packet" , this . onPacket . bind ( this ) )
218
+ . on ( "error" , this . onError . bind ( this ) )
219
+ . on ( "close" , ( ) => {
220
+ this . onClose ( "transport close" ) ;
229
221
} ) ;
230
222
}
231
223
@@ -239,52 +231,46 @@ class Socket extends Emitter {
239
231
debug ( 'probing transport "%s"' , name ) ;
240
232
let transport = this . createTransport ( name , { probe : 1 } ) ;
241
233
let failed = false ;
242
- const self = this ;
243
234
244
235
Socket . priorWebsocketSuccess = false ;
245
236
246
- function onTransportOpen ( ) {
247
- if ( self . onlyBinaryUpgrades ) {
248
- const upgradeLosesBinary =
249
- ! this . supportsBinary && self . transport . supportsBinary ;
250
- failed = failed || upgradeLosesBinary ;
251
- }
237
+ const onTransportOpen = ( ) => {
252
238
if ( failed ) return ;
253
239
254
240
debug ( 'probe transport "%s" opened' , name ) ;
255
241
transport . send ( [ { type : "ping" , data : "probe" } ] ) ;
256
- transport . once ( "packet" , function ( msg ) {
242
+ transport . once ( "packet" , msg => {
257
243
if ( failed ) return ;
258
244
if ( "pong" === msg . type && "probe" === msg . data ) {
259
245
debug ( 'probe transport "%s" pong' , name ) ;
260
- self . upgrading = true ;
261
- self . emit ( "upgrading" , transport ) ;
246
+ this . upgrading = true ;
247
+ this . emit ( "upgrading" , transport ) ;
262
248
if ( ! transport ) return ;
263
249
Socket . priorWebsocketSuccess = "websocket" === transport . name ;
264
250
265
- debug ( 'pausing current transport "%s"' , self . transport . name ) ;
266
- self . transport . pause ( function ( ) {
251
+ debug ( 'pausing current transport "%s"' , this . transport . name ) ;
252
+ this . transport . pause ( ( ) => {
267
253
if ( failed ) return ;
268
- if ( "closed" === self . readyState ) return ;
254
+ if ( "closed" === this . readyState ) return ;
269
255
debug ( "changing transport and sending upgrade packet" ) ;
270
256
271
257
cleanup ( ) ;
272
258
273
- self . setTransport ( transport ) ;
259
+ this . setTransport ( transport ) ;
274
260
transport . send ( [ { type : "upgrade" } ] ) ;
275
- self . emit ( "upgrade" , transport ) ;
261
+ this . emit ( "upgrade" , transport ) ;
276
262
transport = null ;
277
- self . upgrading = false ;
278
- self . flush ( ) ;
263
+ this . upgrading = false ;
264
+ this . flush ( ) ;
279
265
} ) ;
280
266
} else {
281
267
debug ( 'probe transport "%s" failed' , name ) ;
282
268
const err = new Error ( "probe error" ) ;
283
269
err . transport = transport . name ;
284
- self . emit ( "upgradeError" , err ) ;
270
+ this . emit ( "upgradeError" , err ) ;
285
271
}
286
272
} ) ;
287
- }
273
+ } ;
288
274
289
275
function freezeTransport ( ) {
290
276
if ( failed ) return ;
@@ -299,16 +285,16 @@ class Socket extends Emitter {
299
285
}
300
286
301
287
// Handle any error that happens while probing
302
- function onerror ( err ) {
288
+ const onerror = err => {
303
289
const error = new Error ( "probe error: " + err ) ;
304
290
error . transport = transport . name ;
305
291
306
292
freezeTransport ( ) ;
307
293
308
294
debug ( 'probe transport "%s" failed because of error: %s' , name , err ) ;
309
295
310
- self . emit ( "upgradeError" , error ) ;
311
- }
296
+ this . emit ( "upgradeError" , error ) ;
297
+ } ;
312
298
313
299
function onTransportClose ( ) {
314
300
onerror ( "transport closed" ) ;
@@ -328,13 +314,13 @@ class Socket extends Emitter {
328
314
}
329
315
330
316
// Remove all listeners on the transport and on self
331
- function cleanup ( ) {
317
+ const cleanup = ( ) => {
332
318
transport . removeListener ( "open" , onTransportOpen ) ;
333
319
transport . removeListener ( "error" , onerror ) ;
334
320
transport . removeListener ( "close" , onTransportClose ) ;
335
- self . removeListener ( "close" , onclose ) ;
336
- self . removeListener ( "upgrading" , onupgrade ) ;
337
- }
321
+ this . removeListener ( "close" , onclose ) ;
322
+ this . removeListener ( "upgrading" , onupgrade ) ;
323
+ } ;
338
324
339
325
transport . once ( "open" , onTransportOpen ) ;
340
326
transport . once ( "error" , onerror ) ;
@@ -557,13 +543,29 @@ class Socket extends Emitter {
557
543
* @api private
558
544
*/
559
545
close ( ) {
560
- const self = this ;
546
+ const close = ( ) => {
547
+ this . onClose ( "forced close" ) ;
548
+ debug ( "socket closing - telling transport to close" ) ;
549
+ this . transport . close ( ) ;
550
+ } ;
551
+
552
+ const cleanupAndClose = ( ) => {
553
+ this . removeListener ( "upgrade" , cleanupAndClose ) ;
554
+ this . removeListener ( "upgradeError" , cleanupAndClose ) ;
555
+ close ( ) ;
556
+ } ;
557
+
558
+ const waitForUpgrade = ( ) => {
559
+ // wait for upgrade to finish since we can't send packets while pausing a transport
560
+ this . once ( "upgrade" , cleanupAndClose ) ;
561
+ this . once ( "upgradeError" , cleanupAndClose ) ;
562
+ } ;
561
563
562
564
if ( "opening" === this . readyState || "open" === this . readyState ) {
563
565
this . readyState = "closing" ;
564
566
565
567
if ( this . writeBuffer . length ) {
566
- this . once ( "drain" , function ( ) {
568
+ this . once ( "drain" , ( ) => {
567
569
if ( this . upgrading ) {
568
570
waitForUpgrade ( ) ;
569
571
} else {
@@ -577,24 +579,6 @@ class Socket extends Emitter {
577
579
}
578
580
}
579
581
580
- function close ( ) {
581
- self . onClose ( "forced close" ) ;
582
- debug ( "socket closing - telling transport to close" ) ;
583
- self . transport . close ( ) ;
584
- }
585
-
586
- function cleanupAndClose ( ) {
587
- self . removeListener ( "upgrade" , cleanupAndClose ) ;
588
- self . removeListener ( "upgradeError" , cleanupAndClose ) ;
589
- close ( ) ;
590
- }
591
-
592
- function waitForUpgrade ( ) {
593
- // wait for upgrade to finish since we can't send packets while pausing a transport
594
- self . once ( "upgrade" , cleanupAndClose ) ;
595
- self . once ( "upgradeError" , cleanupAndClose ) ;
596
- }
597
-
598
582
return this ;
599
583
}
600
584
@@ -622,7 +606,6 @@ class Socket extends Emitter {
622
606
"closing" === this . readyState
623
607
) {
624
608
debug ( 'socket close with reason: "%s"' , reason ) ;
625
- const self = this ;
626
609
627
610
// clear timers
628
611
clearTimeout ( this . pingIntervalTimer ) ;
@@ -652,8 +635,8 @@ class Socket extends Emitter {
652
635
653
636
// clean buffers after, so users can still
654
637
// grab the buffers on `close` event
655
- self . writeBuffer = [ ] ;
656
- self . prevBufferLen = 0 ;
638
+ this . writeBuffer = [ ] ;
639
+ this . prevBufferLen = 0 ;
657
640
}
658
641
}
659
642
0 commit comments