Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 2x 3x 3x 3x 9x 6x 6x 14x 6x | export class RateLimitsCircuitBreaker {
events: number[] = [];
constructor(
readonly interval: number,
readonly maxEventsCountsInInterval: number
) {}
recordEvent() {
this.events.push(Date.now());
}
shouldBreakCircuit() {
const now = Date.now();
// we don't have take into account upper limit because we are single threaded
this.events = this.events.filter(
(occurredAt) => occurredAt >= now - this.interval
);
return this.events.length > this.maxEventsCountsInInterval;
}
}
|