docs: def exponential_backoff(attempt: int, cap: int=1200) -> timedelta:
      """Calculate a delay to retry using an exponential backoff algorithm.
  
      It is an exponential backoff with random jitter to prevent failures
      from being retried at the same time. It is a good fit for most
      applications.
  
      :arg attempt: the number of attempts made
      :arg cap: maximum delay, defaults to 20 minutes
      """
      base = 3
      temp = min(base * 2 ** attempt, cap)
      return timedelta(seconds=temp / 2 + random.randint(0, temp / 2))