docs: function(apiKey, cache, options) {
    if (!apiKey) {
      throw new Error('Missing Riot API key.');
    }
  
    if (!cache) {
      log('No cache specified.');
      cache = {
        get: function(platform, endpoint, cb) {
          cb(null, null);
        },
        set: function(platform, endpoint, cacheStrategy, data) { // eslint-disable-line no-unused-vars
          // Do nothing.
        }
      };
    }
  
    if (!cache.get || !cache.set) {
      throw new Error('Invalid cache object');
    }
  
    this.apiKey = apiKey;
    this.cache = cache;
  
    this.throttler = {};
    regions.PLATFORMS.forEach(p => this.throttler[p.toLowerCase()] = {});
  
    // Will contain all the queues (one per couple platform/method)
    this.requestQueues = {};
  
    // Populate options object
    if (!(options instanceof Object)) {
      options = {};
    }
    const defaultOptions = {
      defaultRetryPeriod: 10
    };
  
    this.options = Object.assign(defaultOptions, options);
  }