sendRequest
Sends a request and suspends until a corresponding response is received or this coroutine is cancelled.
If the coroutine calling sendRequest is cancelled, a notifications/cancelled is automatically sent to the remote, so the remote side can stop processing.