docs: def Poll(generator=None, condition=None, interval=None, timeout=None):
    """Periodically calls generator function until a condition is satisfied."""
  
    if not generator:
      raise ValueError("generator has to be a lambda")
  
    if not condition:
      raise ValueError("condition has to be a lambda")
  
    if interval is None:
      interval = DEFAULT_POLL_INTERVAL
  
    if timeout is None:
      timeout = DEFAULT_POLL_TIMEOUT
  
    started = time.time()
    while True:
      obj = generator()
      check_result = condition(obj)
      if check_result:
        return obj
  
      if timeout and (time.time() - started) > timeout:
        raise errors.PollTimeoutError(
            "Polling on %s timed out after %ds." % (obj, timeout))
      time.sleep(interval)