private static async Task WaitForExitAsyncFallback(Process process, CancellationToken cancellationToken = default(CancellationToken)) {
try {
while (!process.HasExited) {
await Task.Delay(300, cancellationToken);
if (cancellationToken.IsCancellationRequested) return;
}
} catch (Exception) {
// throw;
await WaitForExitAsyncDeeperFallback(process, cancellationToken);
}
}