The purpose of async is not to return a value immediately; it is to allow theyour code to work on something else while your method awaits a return value.
async doesn't magically make your method run faster. It still has to compute a result. What async does do is make your code non-blocking on the server, and it can often do it without spinning up additional threads, because it merely reorders your code while respecting the order of return values.
To find out more about how this process works, read this MSDN article.