constructor(opts = {}) {
    this.points = opts.points;
    this.duration = opts.duration;
    this.blockDuration = opts.blockDuration;
    this.execEvenly = opts.execEvenly;
    this.execEvenlyMinDelayMs = opts.execEvenlyMinDelayMs;
    this.keyPrefix = opts.keyPrefix;
  }
@param opts Object Defaults {
  points: 4, // Number of points
  duration: 1, // Per seconds
  blockDuration: 0, // Block if consumed more than points in current duration for blockDuration seconds
  execEvenly: false, // Execute allowed actions evenly over duration
  execEvenlyMinDelayMs: duration * 1000 / points, // ms, works with execEvenly=true option
  keyPrefix: 'rlflx',
}