
Company News
Socket Named Top Sales Organization by RepVue
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.
Throttle the parallelism of an asynchronous (promise returning) function / functions
Throttle the parallelism of an asynchronous, promise returning, function / functions. This has special utility when you set the concurrency to 1. That way you get a mutually exclusive lock.
Professionally supported throat is now available
npm install throat
This returns a function that acts a bit like a lock (exactly as a lock if concurrency is 1).
Example, only 2 of the following functions will execute at any one time:
const throat = require('throat')(2);
const resA = throat(async () => {
/* async stuff... */
});
const resB = throat(async () => {
/* async stuff... */
});
const resC = throat(async () => {
/* async stuff... */
});
const resD = throat(async () => {
/* async stuff... */
});
const resE = throat(async () => {
/* async stuff... */
});
This returns a function that is an exact copy of worker except that it will only execute up to concurrency times in parallel before further requests are queued:
const throat = require('throat');
const input = ['fileA.txt', 'fileB.txt', 'fileC.txt', 'fileD.txt'];
const data = Promise.all(
input.map(throat(2, (fileName) => readFile(fileName)))
);
Only 2 files will be read at a time, sometimes limiting parallelism in this way can improve scalability.
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.
MIT
The 'p-limit' package provides similar functionality by limiting the number of concurrent promises. It offers a more modern API and is often used in conjunction with other promise utilities from the 'p-*' family of packages.
The 'async' package is a comprehensive utility library for asynchronous operations. It includes a 'queue' function that can limit the number of concurrent tasks, among many other features. It is more feature-rich but also more complex than 'throat'.
The 'promise-limit' package is another alternative for limiting the number of concurrent promises. It is lightweight and straightforward, similar to 'throat', but with a slightly different API.
FAQs
Throttle the parallelism of an asynchronous (promise returning) function / functions
The npm package throat receives a total of 13,959,625 weekly downloads. As such, throat popularity was classified as popular.
We found that throat demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Company News
Socket won two 2026 Reppy Awards from RepVue, ranking in the top 5% of all sales orgs. AE Alexandra Lister shares what it's like to grow a sales career here.

Security News
NIST will stop enriching most CVEs under a new risk-based model, narrowing the NVD's scope as vulnerability submissions continue to surge.

Company News
/Security News
Socket is an initial recipient of OpenAI's Cybersecurity Grant Program, which commits $10M in API credits to defenders securing open source software.