code: function DiscogsClient(userAgent, auth) {
      // Allow the class to be called as a function, returning an instance
      if (!(this instanceof DiscogsClient)) {
          return new DiscogsClient(userAgent, auth);
      }
      // Set the default configuration
      this.config = util.merge({}, defaultConfig);
      // Set the custom User Agent when provided
      if (typeof userAgent === 'string') {
          this.config.userAgent = userAgent;
      }
      // No userAgent provided, but instead we have an accessObject
      if ((arguments.length === 1) && (typeof userAgent === 'object')) {
          auth = userAgent;
      }
      // Set auth data when provided
      if (auth && (typeof auth === 'object')) {
          queue.setConfig({maxCalls: this.config.requestLimitAuth});
          if (!auth.hasOwnProperty('method')) {
              auth.method = 'discogs';
          }
          if (!auth.hasOwnProperty('level')) {
              if (auth.userToken) {
                  auth.level = 2;
              } else if (auth.consumerKey && auth.consumerSecret) {
                  auth.level = 1;
              }
          }
          this.auth = util.merge({}, auth);
      // Unauthenticated new client instances will decrease the shared request limit
      } else {
          queue.setConfig({maxCalls: this.config.requestLimit});
      }
  }
docs: Object constructor
  @param {string} [userAgent] - The name of the user agent to use to make API calls
  @param {object} [auth] - Optional authorization data object
  @return {DiscogsClient}