I have a IO.Stream which I need to write and then read from. Since the response is directly tied to the data sent, I need to keep this method from executing in parallel, so that the integrity of this is guaranteed. Now, I also want this method to be awaitable, is that even possible ? I wrapped the stream into a synchronized steam, which will prevent interference during reads and writes, but it will not guarantee that the correct order of write and read operations is kept. I'm kinda lost on how to implement this, since I can not lock the stream if I want to use the async await approach.