From 8d572b1899f3739bb887104dd992aff6722f137a Mon Sep 17 00:00:00 2001 From: Mathias Lundell Date: Sat, 5 Feb 2022 18:47:38 +0100 Subject: [PATCH] fix: process unable to exit after connect The process is kept alive after connect until the connect timeout has been fired/cancelled. --- src/AmqpConnectionManager.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/AmqpConnectionManager.ts b/src/AmqpConnectionManager.ts index 4671610..52435c4 100644 --- a/src/AmqpConnectionManager.ts +++ b/src/AmqpConnectionManager.ts @@ -225,6 +225,10 @@ export default class AmqpConnectionManager extends EventEmitter implements IAmqp } }; + let waitTimeout; + if (timeout) { + waitTimeout = wait(timeout); + } try { await Promise.race([ once(this, 'connect'), @@ -232,15 +236,16 @@ export default class AmqpConnectionManager extends EventEmitter implements IAmqp reject = innerReject; this.on('connectFailed', onConnectFailed); }), - ...(timeout + ...(waitTimeout ? [ - wait(timeout).promise.then(() => { + waitTimeout.promise.then(() => { throw new Error('amqp-connection-manager: connect timeout'); }), ] : []), ]); } finally { + waitTimeout?.cancel(); this.removeListener('connectFailed', onConnectFailed); } }