This enables users to wait until async request completes. Taking a
response isn't enough, as receiving a response doesn't imply destruction of the
reqeust context.
This also fixes the raciness in lspserver latency metric test. As it needs to
wait for context destruction, rather than receiving a reply. Happy to perform
that fix in CallResult instead, i.e change LSPClient::call to perform the
insertion of Notification into context and change CallResult::take to wait for
destruction of context rather than receiving a reply(calling set).
Sorry, I didn't really put all the pieces together in my head the first time around.
The context propagation seems OK, but it's too fiddly as a way to control sequencing - can't you just call Client.sync() and assert after that?