node-rate-limiter-flexible
node-rate-limiter-flexible copied to clipboard
RateLimiterQueue default params
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 Hey, this PR looks almost ready. I put a couple of comments.