Documentation / zerotal / client / CircuitBreaker
Class: CircuitBreaker
Defined in: packages/client/src/CircuitBreaker.ts:65
A three-state circuit breaker that wraps async operations.
| State | Behaviour |
|---|---|
closed | Requests pass through; consecutive failures are counted. |
open | All calls immediately throw CircuitBreakerOpenError. |
half-open | One probe request is allowed through to test recovery. |
State transitions:
- closed → open when failure count reaches
threshold - open → half-open after
resetTimeoutms 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: packages/client/src/CircuitBreaker.ts:75
Parameters
options?
Returns
CircuitBreaker
Accessors
state
Get Signature
get state():
CircuitState
Defined in: packages/client/src/CircuitBreaker.ts:81
Returns
failures
Get Signature
get failures():
number
Defined in: packages/client/src/CircuitBreaker.ts:84
Returns
number
Methods
call()
call<
T>(fn):Promise<T>
Defined in: packages/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: packages/client/src/CircuitBreaker.ts:128
Manually reset to the closed state (useful in tests or admin endpoints).
Returns
void