module Mixlib::ShellOut::Unix

def propagate_pre_exec_failure

assume everything went well.
If it's there, un-marshal it and raise. If it's not there,
Attempt to get a Marshaled error from the side-channel.
def propagate_pre_exec_failure
  begin
    e = Marshal.load child_process_status
    raise(Exception === e ? e : "unknown failure: #{e.inspect}")
  rescue EOFError # If we get an EOF error, then the exec was successful
    true
  ensure
    child_process_status.close
  end
end