public static MondValue Delay(double seconds, MondValue cancellationToken = null) { AsyncUtil.EnsureAsync(); var ct = AsyncUtil.AsCancellationToken(cancellationToken); if (!ct.HasValue) { throw new MondRuntimeException("Task.delay: second argument must be a CancellationToken"); } var timeSpan = seconds >= 0 ? TimeSpan.FromSeconds(seconds) : TimeSpan.FromMilliseconds(-1); return(AsyncUtil.ToObject(Task.Delay(timeSpan, ct.Value))); }