Only dispatch_after when we have to, and use the current GCD queue

I know `dispatch_get_current_queue()` is deprecated, but I don't care—I get the feeling that `<NSURLProtocolClient>` expects to be used serially.

/cc @keithduncan @mdiep @joshaber 
This doesn't sleep the thread. This schedules asynchronously, just like before, but it guarantees that we remain on the current queue.