@@ -105,6 +105,7 @@ export default class RedisSocket extends EventEmitter {
105
105
throw new Error ( 'Socket already opened' ) ;
106
106
}
107
107
108
+ this . #isOpen = true ;
108
109
return this . #connect( ) ;
109
110
}
110
111
@@ -116,7 +117,6 @@ export default class RedisSocket extends EventEmitter {
116
117
}
117
118
118
119
try {
119
- this . #isOpen = true ;
120
120
this . #socket = await this . #createSocket( ) ;
121
121
this . #writableNeedDrain = false ;
122
122
this . emit ( 'connect' ) ;
@@ -142,7 +142,7 @@ export default class RedisSocket extends EventEmitter {
142
142
await promiseTimeout ( retryIn ) ;
143
143
}
144
144
retries ++ ;
145
- } while ( ! this . #isReady) ;
145
+ } while ( this . #isOpen && ! this . #isReady) ;
146
146
}
147
147
148
148
#createSocket( ) : Promise < net . Socket | tls . TLSSocket > {
@@ -203,6 +203,8 @@ export default class RedisSocket extends EventEmitter {
203
203
this . #isReady = false ;
204
204
this . emit ( 'error' , err ) ;
205
205
206
+ if ( ! this . #isOpen) return ;
207
+
206
208
this . #connect( true ) . catch ( ( ) => {
207
209
// the error was already emitted, silently ignore it
208
210
} ) ;
@@ -219,14 +221,22 @@ export default class RedisSocket extends EventEmitter {
219
221
}
220
222
221
223
disconnect ( ) : void {
222
- if ( ! this . #socket ) {
224
+ if ( ! this . #isOpen ) {
223
225
throw new ClientClosedError ( ) ;
224
- } else {
225
- this . #isOpen = this . #isReady = false ;
226
226
}
227
227
228
- this . #socket. destroy ( ) ;
229
- this . #socket = undefined ;
228
+ this . #isOpen = false ;
229
+ this . #disconnect( ) ;
230
+ }
231
+
232
+ #disconnect( ) : void {
233
+ this . #isReady = false ;
234
+
235
+ if ( this . #socket) {
236
+ this . #socket. destroy ( ) ;
237
+ this . #socket = undefined ;
238
+ }
239
+
230
240
this . emit ( 'end' ) ;
231
241
}
232
242
@@ -237,7 +247,7 @@ export default class RedisSocket extends EventEmitter {
237
247
238
248
this . #isOpen = false ;
239
249
await fn ( ) ;
240
- this . disconnect ( ) ;
250
+ this . # disconnect( ) ;
241
251
}
242
252
243
253
#isCorked = false ;
0 commit comments