TaskHelpers
using System.Threading;
using System.Threading.Tasks;
namespace System.Reactive.Concurrency
{
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);
}
}
}