Security News
tea.xyz Spam Plagues npm and RubyGems Package Registries
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
promise-coalesce
Advanced tools
Readme
Coalesces multiple promises for the same identifier into a single request.
Reduces load on downstream systems when requests occur at the same time, without dropping requests or needing exclusion locks or wait-and-retry attempts.
With npm:
npm install promise-coalesce
With yarn:
yarn add promise-coalesce
import { coalesceAsync } from 'promise-coalesce';
await coalesceAsync('some-group-key', async () => {
/* your logic */
});
Cache Miss Relief Buffer
import { coalesceAsync } from 'promise-coalesce';
// Imagine you want to retrieve a value, and you have a cache to speed things up.
// If the value isn't in the cache, you'll need to get it from the source system,
// which can be a time-consuming process like a database query or an API request.
async function getValue(cacheKey: string): Promise<YourData> {
// When multiple requests try to fetch the same value from the cache at the same time,
// because of the way async operations work, yielding the event loop at each `await`,
// then they will all try to get it from the cache.
let cachedValue = await cache.get(cacheKey);
// They will take turns checking the condition and all see that the value is missing.
if (!cachedValue) {
// Here's where `coalesceAsync` comes to the rescue!
// Instead of making multiple expensive calls to the source system,
// we use `coalesceAsync`` to ensure it's called only once, and other requests
// wanting the same cache key wait for the result.
cachedValue = await coalesceAsync<YourData>(cacheKey, async () => {
// Now, we fetch the value from the source system.
const sourceValue = await getSourceValue();
// We also cache it for future use.
await cache.set(cacheKey, sourceValue, ttl);
// Now, the value is in the cache, and future requests will avoid calling the source system
// until the cached data expires (based on TTL).
return sourceValue;
});
}
return cachedValue;
}
This solution is inspired by node-cache-manager's
CallbackFiller from the v4.x
line.
It was removed
in the v5.x
line, and promise-coalesce
is an attempt to recover that feature
while also being generic enough for other applications.
FAQs
Coalesces multiple promises for the same identifier into a single request
The npm package promise-coalesce receives a total of 341,250 weekly downloads. As such, promise-coalesce popularity was classified as popular.
We found that promise-coalesce demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer 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.
Security News
Tea.xyz, a crypto project aimed at rewarding open source contributions, is once again facing backlash due to an influx of spam packages flooding public package registries.
Security News
As cyber threats become more autonomous, AI-powered defenses are crucial for businesses to stay ahead of attackers who can exploit software vulnerabilities at scale.
Security News
UnitedHealth Group disclosed that the ransomware attack on Change Healthcare compromised protected health information for millions in the U.S., with estimated costs to the company expected to reach $1 billion.