Skip to main content
zerotal

Documentation


Documentation / @zerotal/client / index / CircuitBreaker

Class: CircuitBreaker

Defined in: client/src/CircuitBreaker.ts:65

A three-state circuit breaker that wraps async operations.

StateBehaviour
closedRequests pass through; consecutive failures are counted.
openAll calls immediately throw CircuitBreakerOpenError.
half-openOne probe request is allowed through to test recovery.

State transitions:

  • closed → open when failure count reaches threshold
  • open → half-open after resetTimeout ms have elapsed
  • half-open → closed on a successful probe
  • half-open → open on a failed probe (resets the timeout)

Example

const breaker = new CircuitBreaker({ threshold: 3, resetTimeout: 10_000 });

const client = createApiClient({
  baseUrl: 'https://api.example.com',
  circuitBreaker: breaker,
});

Constructors

Constructor

new CircuitBreaker(options?): CircuitBreaker

Defined in: client/src/CircuitBreaker.ts:75

Parameters

options?

CircuitBreakerOptions = {}

Returns

CircuitBreaker

Accessors

state

Get Signature

get state(): CircuitState

Defined in: client/src/CircuitBreaker.ts:81

Returns

CircuitState


failures

Get Signature

get failures(): number

Defined in: client/src/CircuitBreaker.ts:84

Returns

number

Methods

call()

call<T>(fn): Promise<T>

Defined in: client/src/CircuitBreaker.ts:92

Wrap fn in the circuit breaker. Throws CircuitBreakerOpenError when the circuit is open and the reset timeout has not yet elapsed.

Type Parameters

T

T

Parameters

fn

() => Promise<T>

Returns

Promise<T>


reset()

reset(): void

Defined in: client/src/CircuitBreaker.ts:128

Manually reset to the closed state (useful in tests or admin endpoints).

Returns

void