awaitServerClose
Blocks until the server closes this connection, discarding anything it sends beforehand.
A backend answers a CancelRequest by closing the connection rather than replying, so waiting for that is what confirms the request was read - instead of leaving it in a socket buffer that an immediate close would race with. The socket timeout the stream was opened with bounds the wait, so a server that accepts the connection and then goes quiet cannot park the caller here.
Never throws and reports nothing: how the connection ends carries no usable signal, since a backend that acted on the request drops it rather than closing it cleanly.