In a classic ASP.NET (non-Core) request thread, why can the following synchronous-over-async code deadlock, and how does ConfigureAwait(false) prevent it?
public ActionResult Index()
{
var data = GetDataAsync().Result; // deadlocks
return View(data);
}
async Task<string> GetDataAsync()
{
await Task.Delay(100);
return "done";
}