diff --git a/lib/queue.js b/lib/queue.js index d8a0f31cd..ea3a1be1b 100755 --- a/lib/queue.js +++ b/lib/queue.js @@ -543,7 +543,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 => { @@ -557,11 +561,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(() => {