public async Task <T> Run <T>(Func <Task <T> > action, PipelineOptions options = null) { options = options ?? _defaultOptions; async Task <object> ToObjectFunc() { return(await action()); } var result = await _pipeline.Invoke(new PipelineContext { Func = ToObjectFunc, Options = options }); return((T)result); }