System.Net.Http.StreamToStreamCopy.DisposeSourceWhenCompleteAsync C# (CSharp) Method

DisposeSourceWhenCompleteAsync() private static method

private static DisposeSourceWhenCompleteAsync ( Task task, Stream source ) : Task
task Task
source System.IO.Stream
return Task
        private static Task DisposeSourceWhenCompleteAsync(Task task, Stream source)
        {
            switch (task.Status)
            {
                case TaskStatus.RanToCompletion:
                    DisposeSource(source);
                    return Task.CompletedTask;

                case TaskStatus.Faulted:
                case TaskStatus.Canceled:
                    return task;

                default:
                    return task.ContinueWith((completed, innerSource) =>
                    {
                        completed.GetAwaiter().GetResult(); // propagate any exceptions
                        DisposeSource((Stream)innerSource);
                    },
                    source, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.DenyChildAttach, TaskScheduler.Default);
            }
        }