diff --git a/src/autonat/index.ts b/src/autonat/index.ts index d8f466d9ff..bc76cfe7c2 100644 --- a/src/autonat/index.ts +++ b/src/autonat/index.ts @@ -364,6 +364,8 @@ export class AutonatService implements Startable { ) } catch (err) { log.error(err) + } finally { + signal.clear() } } diff --git a/src/identify/index.ts b/src/identify/index.ts index 27e5cafc9a..b05962e7f5 100644 --- a/src/identify/index.ts +++ b/src/identify/index.ts @@ -305,18 +305,14 @@ class DefaultIdentifyService implements Startable, IdentifyService { } async _identify (connection: Connection, options: AbortOptions = {}): Promise { - let signal = options.signal let stream: Stream | undefined - // create a timeout if no abort signal passed - if (signal == null) { - signal = anySignal([AbortSignal.timeout(this.timeout), options.signal]) + const signal = anySignal([AbortSignal.timeout(this.timeout), options?.signal]) - try { - // fails on node < 15.4 - setMaxListeners?.(Infinity, signal) - } catch {} - } + try { + // fails on node < 15.4 + setMaxListeners?.(Infinity, signal) + } catch {} try { stream = await connection.newStream([this.identifyProtocolStr], { @@ -348,6 +344,7 @@ class DefaultIdentifyService implements Startable, IdentifyService { if (stream != null) { stream.close() } + signal.clear() } } diff --git a/src/peer-routing.ts b/src/peer-routing.ts index 9357c11c68..9a0dbad45c 100644 --- a/src/peer-routing.ts +++ b/src/peer-routing.ts @@ -104,10 +104,11 @@ export class DefaultPeerRouting implements PeerRouting, Startable { return } - try { - this.abortController = new AbortController() - const signal = anySignal([this.abortController.signal, AbortSignal.timeout(this.refreshManagerInit.timeout ?? 10e3)]) + this.abortController = new AbortController() + + const signal = anySignal([this.abortController.signal, AbortSignal.timeout(this.refreshManagerInit.timeout ?? 10e3)]) + try { // this controller may be used while dialing lots of peers so prevent MaxListenersExceededWarning // appearing in the console try { @@ -121,6 +122,7 @@ export class DefaultPeerRouting implements PeerRouting, Startable { } finally { this.abortController?.abort() this.abortController = undefined + signal.clear() } } diff --git a/src/ping/index.ts b/src/ping/index.ts index d5cf30ea5b..0087e9ad36 100644 --- a/src/ping/index.ts +++ b/src/ping/index.ts @@ -97,18 +97,14 @@ class DefaultPingService implements Startable, PingService { const start = Date.now() const data = randomBytes(PING_LENGTH) const connection = await this.components.connectionManager.openConnection(peer, options) - let signal = options.signal let stream: Stream | undefined - // create a timeout if no abort signal passed - if (signal == null) { - signal = anySignal([AbortSignal.timeout(this.timeout), options.signal]) + const signal = anySignal([AbortSignal.timeout(this.timeout), options?.signal]) - try { - // fails on node < 15.4 - setMaxListeners?.(Infinity, signal) - } catch {} - } + try { + // fails on node < 15.4 + setMaxListeners?.(Infinity, signal) + } catch {} try { stream = await connection.newStream([this.protocol], { @@ -134,6 +130,7 @@ class DefaultPingService implements Startable, PingService { if (stream != null) { stream.close() } + signal.clear() } } } diff --git a/src/upgrader.ts b/src/upgrader.ts index d6f1eedd35..8115931b08 100644 --- a/src/upgrader.ts +++ b/src/upgrader.ts @@ -254,6 +254,7 @@ export class DefaultUpgrader implements Upgrader { }) } finally { this.components.connectionManager.afterUpgradeInbound() + signal.clear() } }