private static async Task <TResult> DoWaitAsync <TResult>(Task <TResult> task, CancellationToken cancellationToken)
        {
            using var cancelTaskSource = new CancellationTokenTaskSource <TResult>(cancellationToken);

            return(await(await Task.WhenAny(task, cancelTaskSource.Task).ContextFree()).ContextFree());
        }
        private static async Task DoWaitAsync(Task task, CancellationToken cancellationToken)
        {
            using var cancelTaskSource = new CancellationTokenTaskSource <object>(cancellationToken);

            await(await Task.WhenAny(task, cancelTaskSource.Task).ContextFree()).ContextFree();
        }