I understand the benefits of writing an async controller in MVC, because I understand what MVC is doing while it's waiting: it returns the original ASP.NET thread to the pool so that it can service other requests. Then when the async controller operation
completes, an ASP.NET thread is retrieved anew from the pool, to finalize the request. This is explained very well
In the case of WCF Web API, what is it doing while waiting for a service operation that returns Task<TResult> to complete? Is it doing something akin to MVC? Or has it blocked the original thread?
I have looked at the source, but I couldn't work it out.
Does WCF Web API do something very much like MVC async controllers, but only if it's hosted by MVC?
I'd like to know because I'm considering writing all my service operations to return Task<TResult>, but only if there's a clear benefit that I can understand (as there is with MVC async controllers).