node-rate-limiter-flexible icon indicating copy to clipboard operation
node-rate-limiter-flexible copied to clipboard

RateLimiterQueue default params

Open sevauni opened this issue 2 weeks ago • 1 comments

Issue: RateLimiterQueue maxQueueSize defaults to undefined when opts is passed without it

When creating a RateLimiterQueue with an options object like this {} then defaulting in the constructor doesn't work correctly but d.ts types allowed it thus leading to the runtime errors like this one

CustomError: Number of requests reached it's maximum undefined

it happens because 0 < undefined evaluates to false

How to reproduce

const queue = new RateLimiterQueue(limiter, {});
queue.removeTokens(1); // immediately rejects even with empty queue

After Fix

new RateLimiterQueue(limiter) -> uses default MAX_QUEUE_SIZE new RateLimiterQueue(limiter, { maxQueueSize: 100 }) -> uses 100 new RateLimiterQueue(limiter, {}) -> TypeScript error (runtime: uses default)

sevauni avatar Dec 04 '25 09:12 sevauni

@sevauni Hey, this PR looks almost ready. I put a couple of comments.

animir avatar Dec 06 '25 10:12 animir