Asynchronous bidirectional RPC over JSON WebSockets