public static IAsyncResult BeginSchedule(this IActionScheduler actionScheduler, int estimateCost, Func <IAsyncResult> begin, Action <IAsyncResult> end, Func <int> actualCost = null, Func <Exception, int> exceptionCost = null) => actionScheduler.BeginSchedule(estimateCost, begin, ia => { end(ia); return(0); }, actualCost == null ? default(Func <int, int>) : _ => actualCost(), exceptionCost);