code: def _get_result(future, pipe, timeout):
      
      counter = count(step=SLEEP_UNIT)
  
      try:
          while not pipe.poll(SLEEP_UNIT):
              if timeout is not None and next(counter) >= timeout:
                  return TimeoutError('Task Timeout', timeout)
              elif future.cancelled():
                  return CancelledError()
  
          return pipe.recv()
      except (EOFError, OSError):
          return ProcessExpired('Abnormal termination')
      except Exception as error:
          return error
docs: Waits for result and handles communication errors.