diff --git a/lib/queue.js b/lib/queue.js index 19eefc35d..51096f4e4 100755 --- a/lib/queue.js +++ b/lib/queue.js @@ -572,7 +572,11 @@ async function redisClientDisconnect(client) { return new Promise((resolve, reject) => { _resolve = resolve; _reject = reject; - client.once('end', _resolve); + let alreadyResolved = false; + client.once('end', () => { + _resolve(); + alreadyResolved = true; + }); pTimeout( client.quit().catch(err => { @@ -586,11 +590,13 @@ async function redisClientDisconnect(client) { // Ignore timeout error }) .finally(() => { - client.once('error', _reject); + if (!alreadyResolved) { + client.once('error', _reject); - client.disconnect(); - if (['connecting', 'reconnecting'].includes(client.status)) { - resolve(); + client.disconnect(); + if (['connecting', 'reconnecting'].includes(client.status)) { + resolve(); + } } }); }).finally(() => { diff --git a/test/test_queue.js b/test/test_queue.js index c57668a99..957a2def5 100644 --- a/test/test_queue.js +++ b/test/test_queue.js @@ -1896,7 +1896,7 @@ describe('Queue', () => { queue2.process(job => { processedCount++; expect(job.data.foo).to.be.equal('bar'); - return delay(1500); + return delay(400); }); queue2.on('completed', () => {