As far as I can tell the code execution is exactly as written.
Here's a more straight forward example of an async/await pattern.
HttpClient client = new HttpClient();
Task task = ExecuteHttpRequestAsync();
Console.WriteLine($"Doing work while waiting for a response");
await task;
Console.WriteLine("Doing work after receiving the response");
async Task ExecuteHttpRequestAsync()
{
Console.WriteLine($"ExecuteHttpRequest Start {DateTime.Now.ToString("hh:mm:ss")}");
Console.WriteLine();
client.BaseAddress = new Uri("https://localhost:7134");
HttpResponseMessage response = await client.GetAsync("WeatherForecast");
string json = await response.Content.ReadAsStringAsync();
//Console.WriteLine(json);
Console.WriteLine();
Console.WriteLine($"ExecuteHttpRequest End {DateTime.Now.ToString("hh:mm:ss")}");
}
The Web API action has a 5 second delay.
[HttpGet(Name = "GetWeatherForecast")]
public async Task<IEnumerable<WeatherForecast>> GetAsync()
{
await Task.Delay(1000 * 5);
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
Sample results
ExecuteHttpRequest Start 11:48:51
Doing work while waiting for a response
ExecuteHttpRequest End 11:48:56
Doing work after receiving the response
Reference documentation
Asynchronous programming with async and await