Hm, so this interface is a bit weird. It looks like `command` still blocks, and waits for the passed block to `return` in order to move on (and in particular, `request_id` isn't used for anything). Is that right?

I think a better conceptual model is that the `client.rb` code retains a mapping of request_id to the supplied block, and dispatches to the correct one when a response is received. I think it'd also be better for the `client.rb` code to understand wait.

This wouldn't change the current behavior much, but would allow for people to actually multiplex their stream, which I think is a prereq for dynamic subscribing/unsubscribing, for example.