Process queued requests until the queue is empty or blocked by an
earliest-execute / rate-limit gate. Concurrent invocations are safe:
Node's single-threaded event loop makes the atomic check-and-set on
nextRequestEarliestMs and the requests.shift() race-free. We can't
simply guard against re-entry — HTTP request injectors frequently make
nested requests that need to be processed by another invocation while
the outer one is awaiting the injector.
Process queued requests until the queue is empty or blocked by an earliest-execute / rate-limit gate. Concurrent invocations are safe: Node's single-threaded event loop makes the atomic check-and-set on
nextRequestEarliestMsand therequests.shift()race-free. We can't simply guard against re-entry — HTTP request injectors frequently make nested requests that need to be processed by another invocation while the outer one is awaiting the injector.