The job worker processes one bird at a time. Browser birds in persistent mode need this (singleton lock), but non-browser birds and browser birds in isolated mode could run in parallel since each gets its own BrowserContext.
A bounded concurrency pool in the worker would let eligible flights overlap while persistent-mode browser birds continue to serialize through the browser lock.
The job worker processes one bird at a time. Browser birds in persistent mode need this (singleton lock), but non-browser birds and browser birds in isolated mode could run in parallel since each gets its own BrowserContext.
A bounded concurrency pool in the worker would let eligible flights overlap while persistent-mode browser birds continue to serialize through the browser lock.