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
);