docs: def WaitUntilDone(self, timeout=None):
      """Wait until the operation is done.
  
      Args:
        timeout: timeout in seconds. None means default timeout (1 hour).
                 0 means no timeout (wait forever).
      Returns:
        Operation object with refreshed target_file.
      Raises:
        PollTimeoutError: if timeout is reached.
      """
  
      utils.Poll(
          generator=self.GetState,
          condition=lambda s: s != self.__class__.STATE_RUNNING,
          timeout=timeout)
      self.target_file = self.target_file.Get()
      return self