From 4ea32724368fe3025617c80e3d6358fd51bb8dc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20Pichon?= Date: Mon, 20 Dec 2021 14:31:01 +0100 Subject: [PATCH] fix bulkhead max wait time, update dependencies, bump v0.0.8 --- package-lock.json | 14 +++++++------- package.json | 2 +- src/helpers/event.ts | 2 +- src/module/bulkhead.ts | 17 +++++++++++------ 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2f5d98e..89afd57 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "mollitia", - "version": "0.0.7", + "version": "0.0.8", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1371,9 +1371,9 @@ } }, "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { @@ -6897,9 +6897,9 @@ "dev": true }, "tmpl": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", - "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "dev": true }, "to-fast-properties": { diff --git a/package.json b/package.json index 66fdb15..573e01b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mollitia", - "version": "0.0.7", + "version": "0.0.8", "description": "JavaScript Resilience Library", "main": "dist/mollitia.umd.js", "module": "dist/mollitia.es5.js", diff --git a/src/helpers/event.ts b/src/helpers/event.ts index 30de454..b410374 100644 --- a/src/helpers/event.ts +++ b/src/helpers/event.ts @@ -52,7 +52,7 @@ export class EventEmitter { public off (eventName: string, cb: EventCallback): void { const listeners = this.listeners[eventName]; if (listeners) { - for (let i = listeners.length; i > 0; i--) { + for (let i = listeners.length - 1; i > 0; i--) { if (listeners[i] === cb) { listeners.splice(i, 1); break; diff --git a/src/module/bulkhead.ts b/src/module/bulkhead.ts index 20aad50..7bf1f96 100644 --- a/src/module/bulkhead.ts +++ b/src/module/bulkhead.ts @@ -2,6 +2,8 @@ import { Module, ModuleOptions } from '.'; import { Circuit, CircuitFunction } from '../circuit'; import { EventEmitter } from '../helpers/event'; +const MAX_TIMEOUT = 2147483647; + /** * Properties that customizes the bulkhead behavior. */ @@ -123,12 +125,15 @@ export class Bulkhead extends Module { this.concurrentBuffer.push(ref); } else if (this.queueBuffer.length < this.queueSize) { this.queueBuffer.push(ref); - const timeout = setTimeout(() => { - this.queueBuffer.splice(this.queueBuffer.indexOf(ref), 1); - resolveDisposable.dispose(); - rejectDisposable.dispose(); - reject(new BulkheadQueueWaitError()); - }, this.maxQueueWait); + let timeout: number; + if (this.maxQueueWait <= MAX_TIMEOUT) { + timeout = setTimeout(() => { + this.queueBuffer.splice(this.queueBuffer.indexOf(ref), 1); + resolveDisposable.dispose(); + rejectDisposable.dispose(); + reject(new BulkheadQueueWaitError()); + }, this.maxQueueWait) as number; + } const executeDisposable = ref.on('execute', () => { executeDisposable.dispose(); clearTimeout(timeout);