def result(self, timeout=None):
        """Return the value returned by the call. If the call hasn't yet
        completed then this method will wait up to ''timeout'' seconds. More
        information in the :doc:`usage` page. If the call hasn't completed in
        timeout seconds then a TimeoutError will be raised. If timeout is not
        specified or None then there is no limit to the wait time.

        If the future is cancelled before completing then CancelledError will
        be raised.

        If the call raised an exception then this method will raise the same
        exception.

        :returns: The value returned by the callable object."""
        if not self._ended():
            return scoop.futures._join(self)
        if self.exceptionValue is not None:
            raise self.exceptionValue
        return self.resultValue