private static async Task WaitForExitAsyncDeeperFallback(Process process, CancellationToken cancellationToken = default(CancellationToken)) {
var processId = process.Id;
while (true) {
await Task.Delay(300, cancellationToken);
if (cancellationToken.IsCancellationRequested) return;
try {
Process.GetProcessById(processId);
} catch (ArgumentException) {
return;
}
}
}