Async tweaks

First off: this is really cool. :+1: 

I made a few async tweaks:

* Why not `id`?
* Ensure `requestBlock` and `completeBlock` exist before calling
* Support making the call on any queue. 

It'd also be neat if both of these `performRequest...` methods were public.