Control rate by consuming tokens.
Math.minb.tokens -= 1function consume(b, now) {
const elapsed = (now - b.last) / 1000;
b.tokens = Math.min(b.capacity, b.tokens + elapsed * b.rate);
b.last = now;
if (b.tokens >= 1) {
b.tokens -= 1;
return true;
}
return false;
}