Timeouts are a concurrency limit only if you also cap concurrency

Setting a thirty-second timeout on an HTTP call feels responsible and is not a limit on anything that matters when the upstream is merely slow rather than down.

// 50 workers ÷ 20s upstream = 2.5 requests/sec before exhaustion
$this->http->post($url, ['timeout' => 30]);

// what actually helps, in order:
//   1. a realistic timeout — 3s, because no user waits 30
//   2. a connect timeout, separately, which is usually 1s
//   3. a cap on concurrent calls to that dependency
$this->http->post($url, ['timeout' => 3, 'connect_timeout' => 1]);

Dropping the timeout from thirty seconds to three usually does more than any circuit breaker, because thirty was never a real number — no user waits that long, and the only thing it bought was a worker held for half a minute. The separate connect timeout matters because a host that is unreachable should fail in a second rather than at the full read timeout. Both together turn a hung dependency into a fast error.