Contains both the error returned by the fallible callback of
BackoffHandler::handle, and a BackoffErrorKind which describes the reason
for termination of the retry loop.
Defines the behavior for logging errors in the retry loop.
It is strongly recommended that implementors either be cheap to construct or, if shared state is needed, it be wrapped in an Arc or similar.
Implementors are responsible for computing the interval between retries, as well as defining the
limit to the number of retries that may be made.
It is strongly recommended that implementors either be cheap to construct or, if shared state is needed, it be wrapped in an Arc or similar.
Provides the interface by which BackoffHandlers can add randmoness to their retries.
Randomization is useful to prevent multiple requests to an endpoint which fail concurrently
from retrying the endpoint concurrently, which may exacerbate the problem or even trigger DoS protections.