class Parallel::Worker

def work(data)

def work(data)
  begin
    Marshal.dump(data, write)
  rescue Errno::EPIPE
    raise DeadWorker
  end
  result = begin
    Marshal.load(read)
  rescue EOFError
    raise DeadWorker
  end
  raise result.exception if result.is_a?(ExceptionWrapper)
  result
end