The default http.Client is deceptively easy to misuse. I always set a request timeout (either via client.Timeout for simple cases or context.WithTimeout per request) and I tune the Transport so we reuse connections aggressively without leaking idle sockets forever. MaxIdleConnsPerHost is a common bottleneck for high fan-out services, and TLSHandshakeTimeout prevents handshake stalls from pinning goroutines. For services that call other services, these settings reduce tail latency and help avoid cascading failures. The biggest win is consistency: if every outbound call has a timeout, your service won’t hang just because a dependency is slow. Pair this with retries and you get predictable behavior.