'If the operation raised an exception, return the `Exception`
object.  Otherwise returns None.
This method takes a ``timeout`` argument for compatibility with
`concurrent.futures.Future` but it is an error to call it
before the `Future` is done, so the ``timeout`` is never used.'

def exception(self, timeout=None):

    self._clear_tb_log()
    if (self._exc_info is not None):
        return self._exc_info[1]
    else:
        self._check_done()
        return None
