What does it mean you can’t pass function? Unwrap returns a Task (Task<T>) which can be appended with ContinueWith extension if needed. So you don’t have to pass a function and you can await bare result T from Task<Task<T>> not a Task<T>. https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-unwrap-a-nested-task