It won't be http.Client who will reestablish the connection, but whatever
implementation supporting the http.RoundTripper interface provided in the
Transport field of the http.Client. If that field is not set, the default
http.DefaultTransport will be used, which is an instance of http.Transport.
Basically the idea is that an http.Transport first tries to pick a live but
idle TCP connection from its pool of idle connections, and if there are none,
it tries to establish a new one.
I'd undeline the idea is that an http.Client is not something akin to a single
invocation of `curl`; instead it's a shared client-side HTTP request
"multiplexer" which is OK to be used for multiple concurrent HTTP requests
wihch will share a single http.RoundTripper configured to be used for that
http.Client (as explained above), and it, in turn, is responsible for
maintaining a pool of ready-to-use connections, any number of which can be
used to carry out HTTP requests concurrently.