diff --git a/packages/client/lib/client/index.spec.ts b/packages/client/lib/client/index.spec.ts index 3b5e952c3b..c5bfb32c03 100644 --- a/packages/client/lib/client/index.spec.ts +++ b/packages/client/lib/client/index.spec.ts @@ -721,8 +721,6 @@ describe('Client', () => { }); testUtils.testWithClient('client.disconnect', async client => { - await client.connect(); - const pingPromise = client.ping(), disconnectPromise = client.disconnect(); assert.equal(client.isOpen, false); @@ -731,8 +729,10 @@ describe('Client', () => { assert.doesNotReject(disconnectPromise), assert.rejects(client.ping(), ClientClosedError) ]); - }, { - ...GLOBAL.SERVERS.OPEN, - disableClientSetup: true - }); + }, GLOBAL.SERVERS.OPEN); + + testUtils.testWithClient('should be able to connect after disconnect (see #1801)', async client => { + await client.disconnect(); + await client.connect(); + }, GLOBAL.SERVERS.OPEN); }); diff --git a/packages/client/lib/client/socket.ts b/packages/client/lib/client/socket.ts index effb780a08..57ecf609d9 100644 --- a/packages/client/lib/client/socket.ts +++ b/packages/client/lib/client/socket.ts @@ -170,7 +170,7 @@ export default class RedisSocket extends EventEmitter { .off('error', reject) .once('error', (err: Error) => this.#onSocketError(err)) .once('close', hadError => { - if (!hadError && this.#isOpen) { + if (!hadError && this.#isOpen && this.#socket === socket) { this.#onSocketError(new SocketClosedUnexpectedlyError()); } })