'Sets the result of the future as being the given exception.
Should only be used by Executor implementations and unit tests.'

def set_exception(self, exception):

    with self._condition:
        self._exception = exception
        self._state = FINISHED
        for waiter in self._waiters:
            waiter.add_exception(self)
        self._condition.notify_all()
    self._invoke_callbacks()
