Policy
A composable resilience decorator: applies some cross-cutting behavior (retry, circuit breaking, rate limiting, ...) around a suspend operation.
Any of Bulkhead, CircuitBreaker, RateLimiter, TimeLimiter can be converted to a Policy via their asPolicy() extension, and policies compose with plus.
Implemented as a plain interface (not a fun interface): apply is generic per call, which a stored lambda cannot represent, so instances are created via the factory functions in this file rather than SAM conversion.