UNPKG

mollitia

Version:

JavaScript Resilience Library

66 lines (64 loc) 1.95 kB
import { Module, ModuleOptions } from './index.js'; import { Circuit, CircuitFunction } from '../circuit.js'; import { EventEmitter } from '../helpers/event.js'; /** * Properties that customizes the bulkhead behavior. */ export declare abstract class BulkheadOptions extends ModuleOptions { /** * The number of concurrent requests that can be running in parallel. */ concurrentSize?: number; /** * The number of requests that can be queued. */ queueSize?: number; /** * The amount of time before a queued request is rejected. */ maxQueueWait?: number; } /** * Returned when a bulkhead module concurrent buffer and queue are overloaded. * @param message Circuit is overloaded */ export declare class BulkheadOverloadError extends Error { constructor(); } /** * Returned when a bulkhead module request has been waiting for too long in queue. * @param message Waiting for too long in queue */ export declare class BulkheadQueueWaitError extends Error { constructor(); } declare class BufferedPromise extends EventEmitter { private promise; private params; constructor(promise: CircuitFunction, ...params: any[]); execute<T>(): Promise<T>; } /** * The Bulkhead Module, that allows to limit concurrent executions. */ export declare class Bulkhead extends Module { /** * The number of concurrent requests that can be running in parallel. */ concurrentSize: number; /** * The number of requests that can be queued. */ queueSize: number; /** * The amount of time before a queued request is rejected. */ maxQueueWait: number; concurrentBuffer: BufferedPromise[]; queueBuffer: BufferedPromise[]; constructor(options?: BulkheadOptions); execute<T>(circuit: Circuit, promise: CircuitFunction, ...params: any[]): Promise<T>; private _promiseBulkhead; private _addBufferedPromise; } export {};