internal static Task QueueActionAsync(this OrleansTaskScheduler scheduler, Action action, IGrainContext targetContext) { var resolver = new TaskCompletionSource <bool>(TaskCreationOptions.RunContinuationsAsynchronously); Action syncFunc = () => { try { action(); resolver.TrySetResult(true); } catch (Exception exc) { resolver.TrySetException(exc); } }; scheduler.QueueAction(syncFunc, targetContext); return(resolver.Task); }