private Task InternalScheduleOnce(int initialDelayMs, Action action, CancellationToken token) { if (initialDelayMs == Timeout.Infinite) { return(TaskExt.CreateInfiniteTask()); } if (initialDelayMs <= 0) { action(); return(TaskExt.CreateCompletedTask()); } return(Task.Delay(initialDelayMs, token).Then(t => action())); }