Debounce & Throttle Functions

What design pattern is demonstrated in this implementation?
class RateLimiter {
  constructor() {
    this.throttled = new Map();
    this.debounced = new Map();
  }
  
  throttle(key, func, limit) {
    if (!this.throttled.has(key)) {
      this.throttled.set(key, throttle(func, limit));
    }
    return this.throttled.get(key);
  }
  
  debounce(key, func, wait) {
    if (!this.debounced.has(key)) {
      this.debounced.set(key, debounce(func, wait));
    }
    return this.debounced.get(key);
  }
}
Next Question (12/20)