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