CircuitBreakerOpenError

import { CircuitBreakerOpenError } from "jsr:@ende/async/unstable-circuit-breaker";

class ยท experimental

class CircuitBreakerOpenError extends Error

Error thrown when CircuitBreaker is open and rejects a request.

Example: Usage

import { CircuitBreaker, CircuitBreakerOpenError } from "@ende/async/unstable-circuit-breaker";
import { assert } from "@ende/assert";

const breaker = new CircuitBreaker({
  failureRateThreshold: 1,
  minimumThroughput: 1,
});

// Trigger a failure to open the circuit
try {
  await breaker.execute(() => Promise.reject(new Error("fail")));
} catch (_) {
  // Expected to fail
}

// Now the circuit is open
try {
  await breaker.execute(() => Promise.resolve("ok"));
} catch (error) {
  assert(error instanceof CircuitBreakerOpenError);
  assert(error.remainingCooldownMs >= 0);
}

Constructors

constructor

new CircuitBreakerOpenError(remainingCooldownMs: number)

experimental

Constructs a new CircuitBreakerOpenError instance.

remainingCooldownMs: number

The number of milliseconds until the circuit breaker exits the open state.

Properties

remainingCooldownMs

readonly remainingCooldownMs: number

experimental

Milliseconds until the circuit breaker cooldown expires.

Example: Usage

import { CircuitBreakerOpenError } from "@ende/async/unstable-circuit-breaker";
import { assertEquals } from "@ende/assert";

const error = new CircuitBreakerOpenError(5000);
assertEquals(error.remainingCooldownMs, 5000);

Source