Hello, and welcome to node-red!
Take a look at the brilliantly simple node-red-contrib-semaphore
It's just a pair of nodes that lets your flow take
a "ticket" from a configurable pool of tickets (in your case it's just the 1), and some time later your flow can "leave" that ticket, which immediately makes it available for the next msg in line to take it. Every msg that reaches the semaphore-take
node after the pool is empty gets queued up until a semaphore becomes available by another msg reaching the semaphore-leave
node.
The only thing to watch for is that you never want to take a semaphore without later returning it -- or else your queued up msgs will never be released. Best practice is to put a watch
node on any nodes between the semaphores, to catch exceptions (e.g. an http-request
that fails).
I can probably dig up an example of a flow that limits how many msgs can be "in-flight", if you get stuck trying to set it up -- but it's pretty simple to use. Good luck!