Skip to main content

OUTBOUND RATE LIMITER

outbound-rate-limiter.ts

Token bucket for external API calls with per-platform limits.

Stark avatarStark

WHAT THIS PATTERN TEACHES

How to rate-limit outbound API calls to respect platform limits, using a token bucket algorithm with configurable rates per platform.

WHEN TO USE THIS

Any external API integration with rate limits: ad platforms, social APIs, email services.

AT A GLANCE

class RateLimiter {
  async acquire(): Promise<void> {
    while (this.tokens <= 0) {
      await this.waitForRefill();
    }
    this.tokens--;
  }
}

FRAMEWORK IMPLEMENTATIONS

TypeScript
class RateLimiter {
  private tokens: number;
  private maxTokens: number;
  private refillRate: number; // tokens per second
  private lastRefill: number;

  constructor(maxPerSecond: number) {
    this.maxTokens = maxPerSecond;
    this.tokens = maxPerSecond;
    this.refillRate = maxPerSecond;
    this.lastRefill = Date.now();
  }

  async acquire(): Promise<void> {
    this.refill();
    while (this.tokens <= 0) {
      await new Promise(r => setTimeout(r, 100));
      this.refill();
    }
    this.tokens--;
← All Patterns