code: def first(self, timeout=None):
          
          while True:
              with self._jobfinished:
                  if self._results or not self._jobs.unfinished_tasks:
                      break
                  self._jobfinished.wait(timeout)
          return self._results[0] if self._results else None
docs: Wait for the first successful result to become available
          :param timeout: Wait timeout, sec
          :type timeout: float|int|None
          :return: result, or None if all threads have failed
          :rtype: *