Failed and done can stay unimplemented. If we read stdout or stderr, reschedule immediately to process all output before considering the possibility the program stopped.