Skip to main content

Overview

RetryPolicy and CircuitBreaker provide resilient error handling with automatic retries and circuit breaker patterns.

Import

import { RetryPolicy, CircuitBreaker } from "bytekit";
// or
import { RetryPolicy } from "bytekit/retry-policy";

RetryConfig

maxAttempts
number
default:"3"
Maximum number of retry attempts
initialDelayMs
number
default:"100"
Initial delay before first retry
maxDelayMs
number
default:"10000"
Maximum delay between retries
backoffMultiplier
number
default:"2"
Multiplier for exponential backoff
retryableStatuses
number[]
HTTP status codes that should trigger retry

CircuitBreakerConfig

failureThreshold
number
default:"5"
Number of failures before opening circuit
successThreshold
number
default:"2"
Number of successes to close circuit
resetTimeoutMs
number
default:"60000"
Time before attempting to close circuit

Usage with ApiClient

import { ApiClient } from "bytekit";

const api = new ApiClient({
  baseUrl: "https://api.example.com",
  retryPolicy: {
    maxAttempts: 3,
    initialDelayMs: 100,
    maxDelayMs: 5000,
    backoffMultiplier: 2,
    retryableStatuses: [408, 429, 500, 502, 503, 504]
  },
  circuitBreaker: {
    failureThreshold: 5,
    successThreshold: 2,
    resetTimeoutMs: 60000
  }
});

// Requests will automatically retry on failure
const data = await api.get("/data");

Standalone Usage

import { RetryPolicy } from "bytekit";

const retryPolicy = new RetryPolicy({
  maxAttempts: 3,
  initialDelayMs: 100
});

await retryPolicy.execute(async () => {
  const response = await fetch("/api/data");
  if (!response.ok) throw new Error("Request failed");
  return response.json();
});

See Also