Add async request/response methods.

Ability to have async request/response, just uses a `TaskCompletionSource`.

/cc @cocowalla