feat: implement pool() for controlled concurrency and add tests #1375 #1393
+51
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #1375
Added a pool() utility to manage parallel task execution with a strict concurrency limit. This is useful for rate-limiting operations or managing system resources during heavy async workloads.
Implementation:
Logic added to src/core.ts.
Uses a worker-queue pattern to ensure no more than limit tasks run simultaneously.
Accepts any Iterable of task-returning functions.
Testing: Verified on Windows 11. A test case with 4 tasks (1s each) and a limit of 2 finished in ~2.1s, confirming that tasks are queued correctly rather than running all at once or purely sequentially.
Added unit test in test/pool.test.js.