make client interruptible

HttpURLConnection, by virtue of using SocketInputStream, is not normally
interruptible.

This poses problem to users wanting to cancel requests and clean up
connections.

Work around this by executing requests on a threadpool and closing
connections when interrupted