Why it matters
Each per-call client opens its own connection pool, and disposing it does not free the socket — the connection sits in TIME_WAIT for minutes, so under load the ephemeral port range runs out and the application fails with SocketException. Wrapping the construction in using makes it worse, not better, because disposal is exactly what strands the socket. The usual fix — make it a singleton — trades the problem for its mirror image: one handler holds its connections for the life of the process and never re-resolves DNS, so after a failover or deployment the client keeps routing to an endpoint that has moved. IHttpClientFactory is the only shape that gets both connection reuse and DNS freshness.