Resilience Library
The @lssm/lib.resilience library provides primitives to handle failures gracefully.
Circuit Breaker
Prevent cascading failures by stopping calls to a failing dependency.
import { CircuitBreaker } from '@lssm/lib.resilience/circuit-breaker';
const breaker = new CircuitBreaker({
failureThreshold: 5,
resetTimeoutMs: 30000,
});
const result = await breaker.execute(async () => {
return await fetch('https://api.stripe.com/v1/charges');
});Retry
Automatically retry transient failures with exponential backoff.
import { retry } from '@lssm/lib.resilience/retry';
const result = await retry(
async () => fetchUser(id),
3, // retries
1000, // initial delay
true // backoff
);Timeout & Fallback
Set hard limits on execution time and provide default values on failure.
import { timeout, fallback } from '@lssm/lib.resilience';
const result = await fallback(
() => timeout(slowOperation, 5000),
defaultValue
);