code: def set_error(self, e):
          
          self.result = (False, e)
          self._lock.release()
docs: Rather than allowing unmanaged exceptions to explode, or raising errors 
          within thread, the worker thread should call this function with an 
          error class or instance.