schedule(operationId, delay, cb) {
    const pendingTimeout = this.pendingTimeouts.get(operationId);
    if (pendingTimeout) {
      this.host.clearTimeout(pendingTimeout);
    }
    this.pendingTimeouts.set(operationId, this.host.setTimeout(ThrottledOperations.run, delay, this, operationId, cb));
    if (this.logger) {
      this.logger.info(`Scheduled: ${operationId}${pendingTimeout ? ", Cancelled earlier one" : ""}`);
    }
  }
Wait `number` milliseconds and then invoke `cb`.  If, while waiting, schedule
is called again with the same `operationId`, cancel this operation in favor
of the new one.  (Note that the amount of time the canceled operation had been
waiting does not affect the amount of time that the new operation waits.)