Async tweaks

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