Skip to main content
nestrs-resilience wraps fallible async work in composable policies. It is the NestJS @nestjs/resilience analogue: a ResilienceService that runs a closure under retry / timeout / circuit / bulkhead, plus typed ResilienceError and ResilienceEvent for HTTP/RPC mapping and observability.

Install

Register the module

ResilienceModule::register exports ResilienceService so injectables can take Arc<ResilienceService>.

Execute under a policy bundle

PolicyBundle fields

When a field is None, ResilienceOptions.defaults apply.

Map errors at the HTTP boundary

Events

ResilienceService::subscribe() returns a broadcast::Receiver<ResilienceEvent> for retries, timeouts, and circuit transitions — useful for metrics counters.

Defaults that matter

  • Jitter is on for RetryPolicy::default() — do not disable in multi-instance deployments.
  • Circuit opens after 5 failures for 30s (ResilienceOptions defaults).
  • AI (nestrs-ai) uses this crate for model-call timeout/retry when the ai feature is enabled.

See also