Fixes blocking async retries: retry waits no longer stall the event loop.
Retrier.retry()now drives its loop withtenacity.AsyncRetryinginstead of the synchronoustenacity.Retrying(#10)CircuitBreakerRedis.increment_failures_countandCircuitBreakerRedis.is_host_availablelikewise (#11)
Previously every retry wait slept via time.sleep(), blocking the whole event loop rather than just the calling task. For CircuitBreakerRedis the first backoff is 1-2 seconds, so a single Redis reconnect froze every task in the process.
No API changes: Retrier keeps its name and signature, no AsyncRetrier is introduced, and attempt counts, retry predicates, reraise, callbacks and circuit breaker interaction order are all unchanged.