A simple counting semaphore: caps how many run() callbacks execute at once, queueing the
rest in call order. Used to bound concurrent outbound requests through a single executor
instance (e.g. an LLM turn that fires off 20 tool calls against one flaky provider).
A simple counting semaphore: caps how many
run()callbacks execute at once, queueing the rest in call order. Used to bound concurrent outbound requests through a single executor instance (e.g. an LLM turn that fires off 20 tool calls against one flaky provider).