catch socket.timeout exception

Fixes #296. Cleaned up version of #297. I had to add the actual request_url to the response so that we could raise it in the exception.