Timeouts, retries and backoff with jitter

Building resilient systems and dealing with failures by using timeouts, retries, and backoff with jitter.