I understand that async calls can be a useful tool under some circumstances. If you are able to do something else while an asynchronous call is processed, it can speed up your application.
However, in an MVC application running in IIS I don't see any benefit of code such as: var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe)
My understanding is that IIS is already allocating requests to the threads it has available and that spawning off a new thread won't buy anything if you always await. In this example, all we're doing is adding some overhead for context switching. The thread IIS allocated to handle the request is not freed up at any time because of the "await".
Am I missing something? Is the thread made available to IIS while we are waiting? If we always wait for a response from a method, is there any reaon to make it asynchronously?