Opening a network connection is useful work, but it is usually not the work the user requested.
A new HTTPS connection can require name resolution, a TCP handshake, TLS negotiation, kernel state, cryptographic computation, and memory at both endpoints. Closing it after one small request discards that setup. The next request pays the cost again.
A connection pool keeps a bounded collection of established connections and lends them to application operations. A successful pool reduces setup latency and connection churn while controlling how many concurrent operations reach a dependency.
Pooling introduces its own failure modes. A pool can be too small, too large, full of stale connections, or exhausted by responses that were never released. Effective pooling requires lifecycle rules, capacity limits, timeouts, and observability.