(fn)
| 538 | const queue = []; |
| 539 | |
| 540 | const execute = async (fn) => { |
| 541 | if (running < concurrency) { |
| 542 | running++; |
| 543 | try { |
| 544 | await fn(); |
| 545 | } finally { |
| 546 | running--; |
| 547 | if (queue.length > 0) { |
| 548 | execute(queue.shift()); |
| 549 | } |
| 550 | } |
| 551 | } else { |
| 552 | queue.push(fn); |
| 553 | } |
| 554 | }; |
| 555 | |
| 556 | return execute; |
| 557 | }; |