Added response code, logging.
Added call to future.cancel to try to stop the thread that's waiting for
output; however, IT DOES NOT cancel the read.

The result is that, for a badly-behaved server, each poll consumes one
thread, making it uncancellable. Not acceptable.
Added read timeout, which cures the problem with an unresponsive web
server.