constructor({ batchSize = 1 } = {}) {
    this.batchSize = batchSize

    this.currentBatch = { currentToken: null, remaining: 0 }

    // A set of IDs used for deduplication.
    this.tokenIds = new Set()

    // See discussion on the FIFO and priority queues in `next()`.
    this.fifoQueue = []
    this.priorityQueue = new PriorityQueue(this.constructor.compareTokens)
  }
TokenPool Constructor

@param {number} batchSize
   The maximum number of times we use each token before moving
   on to the next one.