def result(self, timeout=None):
        """Return the result of the call that the future represents.

        Args:
            timeout: The number of seconds to wait for the result if the future
                isn't done. If None, then there is no limit on the wait time.

        Returns:
            The result of the call that the future represents.

        Raises:
            TimeoutError: If the future didn't finish executing before the given
                timeout.
            exceptions.Exception: If the call raised then that exception will be
                raised.
        """
        if self._state == self.RUNNING:
            self._context.wait_all_futures([self], timeout)
        return self.__get_result()