1. each client use his own http.Client
2. split R/W timeout to: read timeout & write timeout
3. split the results of network failed to: connect failed & R/W failed
4. add some documentation
run gofmt on source