docs: 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