In practice returning the PendingRequest is clunky because we have to await both the send() call, and the returned PendingRequest. This instead awaits the PendingRequest and returns the result directly, which results in a much nicer API for sending websocket requests.