code: def exception(self, timeout=None):
          
          # Wait until the future is done.
          if not self._completed.wait(timeout=timeout):
              raise exceptions.TimeoutError("Timed out waiting for result.")
  
          # If the batch completed successfully, this should return None.
          if self._result != self._SENTINEL:
              return None
  
          # Okay, this batch had an error; this should return it.
          return self._exception
docs: Return the exception raised by the call, if any.
  
          This blocks until the message has successfully been published, and
          returns the exception. If the call succeeded, return None.
  
          Args:
              timeout (Union[int, float]): The number of seconds before this call
                  times out and raises TimeoutError.
  
          Raises:
              TimeoutError: If the request times out.
  
          Returns:
              Exception: The exception raised by the call, if any.