docs: def wait(self, timeout=None):
          """Wait until the result is available or until roughly timeout seconds
          pass."""
          logger = logging.getLogger(__name__)
          if int(self.max_sleep_interval) < int(self._min_sleep_interval):
              self.max_sleep_interval = int(self._min_sleep_interval)
          t0 = time.time()
          sleep_seconds = min(5, self.max_sleep_interval)
          status = self.status
          prev_status = status
          while status < COMPLETED:
              logger.debug("sleep for %d seconds", sleep_seconds)
              time.sleep(sleep_seconds)
              if 2*sleep_seconds <= self.max_sleep_interval:
                  sleep_seconds *= 2
              if timeout is not None:
                  if int(time.time() - t0) > int(timeout):
                      return
              status = self.status
              if status != prev_status:
                  sleep_seconds = min(5, self.max_sleep_interval)
                  prev_status = status