<PackageReference Include="System.Reactive" Version="6.0.0-preview.16" />

TaskHelpers

static class TaskHelpers
using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace System.Reactive.Concurrency { [System.Runtime.CompilerServices.NullableContext(1)] [System.Runtime.CompilerServices.Nullable(0)] internal static class TaskHelpers { private const int MaxDelay = int.MaxValue; public static Task Delay(TimeSpan delay, CancellationToken token) { if ((long)delay.TotalMilliseconds > 2147483647) { TimeSpan remainder = delay - TimeSpan.FromMilliseconds(2147483647); return Task.Delay(2147483647, token).ContinueWith((Task _) => Delay(remainder, token), TaskContinuationOptions.ExecuteSynchronously).Unwrap(); } return Task.Delay(delay, token); } public static Exception GetSingleException(this Task t) { if (t.Exception.InnerException != null) return t.Exception.InnerException; return t.Exception; } } }