code: def timeout_exponential_backoff(
          retries: int,
          timeout: int,
          maximum: int,
  ) -> Iterator[int]:
      
      yield timeout
  
      tries = 1
      while tries < retries:
          tries += 1
          yield timeout
  
      while timeout < maximum:
          timeout = min(timeout * 2, maximum)
          yield timeout
  
      while True:
          yield maximum
docs: Timeouts generator with an exponential backoff strategy.
  
      Timeouts start spaced by `timeout`, after `retries` exponentially increase
      the retry delays until `maximum`, then maximum is returned indefinitely.