I believe that you see this delay for several reasons. Based on the code you provided, all other actions besides the request itself take a certain amount of time between requests. Therefore, deserializing the response will result in a delay.
In addition, the delay can be tied to the amount of data that is returned and processed further along the stack. I tried to recreate the script that you describe in your question with the following code:
const int MaxNumberOfCycles = 10; static void Main() { Start().Wait(); } async Task Start() { var client = new Client(); var cycle = 0; while (cycle < MaxNumberOfCycles) { var response = await client.SearchAsync(cycle++); } } class Client { public async Task<HttpResponseMessage> SearchAsync(int n) {
With small response sizes, I did not see a delay between requests. As the size of the responses increased, I began to see somewhat longer delays. Here's a screenshot for a series of queries returning 1 MB responses:

One thing I noticed about your scenario is that your transfer activity graph shows a solid black line at the end of each request. This line indicates "time to first byte", which means that the processing of the response did not even begin until the very end of your request.
Another problem you might think is that Fiddler causes these delays. I noticed that your answers are not passed to Fiddler, which probably affects the results. You can learn more about the response flow in Fiddler .
I hope some of this information helps ...
source share