Adaptive (Circuit Breaker)

Three-state circuit breaker: Closed → Open (after FailureThreshold consecutive failures) → Half-Open (after ResetTimeout, one probe allowed) → Closed (on success). Dynamic timeout scaling. Never trips on permanent 4xx errors.

Closedall calls passfailures=0okOpenfast-failCircuitBreaker errHalf-Open1 probeothers rejectedfailures ≥ 5ResetTimeoutprobe ok → Closed (failures=0)probe failReleaseProbe() on Canceled Probereturns to Open, prevents permanent half-open lock3-state machine — never trips on 4xx (xerr.IsPermanent)

Signature

action contract
func Adaptive[Req, Res any](name string, cfg AdaptiveConfig) Middleware[Req, Res]