The ExitedEvent test causing failures on public jenkins has exposed that the external process ExitedEvent mechanism is very broken.
On OSX it fails to fire when a process closes most of the time. Sometimes it runs. On linux it appears to run more often.
This commit hides a problem with our WaitHandle implementation for external processes. We will return WAIT_FAILURE for external processes, which triggers the callback. By having the callback reschedule itself, this busy waiting causes a lot of allocation. Sgen's efforts to handle us rapidly creating an absurd amount of garbage led to the timeouts that exposed this bug.
Busy waiting should not be calling the callback at all, it should be using a timer of some sort.