code: function CognitoStrategy(options, verify) {
  
    if (!options) throw new Error('Cognito strategy requires options');
    if (!verify) throw new Error('Cognito strategy requires a verify callback');
  
    AWS.config.region = options.region;
  
    passport.Strategy.call(this);
    this.name = 'cognito';
    this._userPoolId = options.userPoolId;
    this._clientId = options.clientId;
    this._verify = verify;
  }
docs: `Strategy` constructor.
  
  The Cognito User Pools authentication strategy.
  
  Applications must supply a `verify` callback which accepts an `accessToken`, `idToken`
  `refreshToken` and service-specific `profile`, and then calls the `cb`
  callback supplying a `user`, which should be set to `false` if the
  credentials are not valid.  If an exception occured, `err` should be set.
  
  Options:
  - `userPoolId`     Cognito User Pool Id        // required
  - `clientId`       Cognito app client Id       // required
  - `region`         AWS region                  // required
  
  Examples:
  
  passport.use(new CognitoStrategy({
  userPoolId: 'ap-northeast-1_eSjqLfqKc',
  clientId: 'vtvg02tr21zmxvspyvawtv09b',
  region: 'ap-northeast-1'
  },
  function(accessToken, refreshToken, profile, cb) {
  User.findOrCreate(..., function (err, user) {
  cb(err, user);
  });
  }
  ));
  
  @constructor
  @param {object} options
  @param {function} verify
  @access public