diff --git a/src/adapters/web-socket-adapter.ts b/src/adapters/web-socket-adapter.ts index 00b36b8..16ce8d9 100644 --- a/src/adapters/web-socket-adapter.ts +++ b/src/adapters/web-socket-adapter.ts @@ -188,14 +188,19 @@ export class WebSocketAdapter extends EventEmitter implements IWebSocketAdapter { period: period, rate: rate }, ) - const hits = await Promise.all( - rateLimits - .map(({ period, rate }) => hit(period, rate)) - ) - debug('rate limit check %s: %o = %o', client, rateLimits.map(({ period }) => period), hits) + for (const { rate, period } of rateLimits) { + const isRateLimited = await hit(period, rate) - return hits.some((thresholdCrossed) => thresholdCrossed) + + if (isRateLimited) { + debug('rate limited %s: %d messages / %d ms exceeded', client, rate, period) + + return true + } + } + + return false } private onClientPong() {