In another SO question, I was advised to send an asynchronous network request, rather than send a synchronous request in the background thread. The reason is that I do not waste thread. I am trying to understand how this happens.
This is an original approach. I can understand how there are two threads. One of them is the main thread (1), and the second is the background thread (Task.Run) (2), which calls the WCF call:

This is my sketch of the proposed approach. I am trying to understand how a stream is kept. After calling async WCF, another thread will not be created for callback from async WCF call?

After thinking about it further, perhaps only one thread is used if callback processing is not needed?