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