public bool TryHandle(SlackBotCommandContext context, CancellationToken token, out Task task) { task = null; string taskName = context.IncomingMessage.Text; ITask taskToExecute; if (!string.IsNullOrWhiteSpace(taskName) && _factory.TryGet(taskName, out taskToExecute)) { task = context.WriteText($"Task {taskToExecute.Name()} is being executed.") .ContinueWith(t => Task.FromResult(_runner.Execute(taskToExecute)), token) .ContinueWith(t => context.WriteText($"Task {taskToExecute.Name()} finished executing."), token); } return(task != null); }