docs: function Strategy(options, keying, verify) {
    if (typeof options === 'function') {
      verify = keying;
      keying = options;
      options = undefined;
    }
    options = options || {};
  
    var audience = options.audience;
  
    if (!audience) {
      throw new TypeError('OAuth 2.0 JWT bearer strategy requires an audience option');
    }
    if (!keying) {
      throw new TypeError('OAuth 2.0 JWT bearer strategy requires a keying callback');
    }
    if (!verify) {
      throw new TypeError('OAuth 2.0 JWT bearer strategy requires a verify callback');
    }
  
    if (!Array.isArray(audience)) {
      audience = [ audience ];
    }
  
    passport.Strategy.call(this);
    this.name = 'oauth2-jwt-bearer';
    this._audience = audience;
    this._keying = keying;
    this._verify = verify;
    this.jwtAlgorithm = options.jwtAlgorithm || 'RS256';
  
    this._passReqToCallback = options.passReqToCallback;
  }