title: TypeError: done is not a function
body: <p>I'm using passport.js for the authentication and handling of sessions in my project. </p>
  
  <p>I use email to authenticate from passport but when the done is called on verification, I get the error done <em>is not a function.</em></p>
  
  <pre><code>at Promise.&lt;anonymous&gt; (/Users/sultan/Desktop/too2/controllers/users.js:39:28)
  at Promise.&lt;anonymous&gt; (/Users/sultan/Desktop/too2/node_modules/mongoose/lib/promise.js:120:8) 
  </code></pre>
  
  <h2>Code</h2>
  
  <pre><code>  // LOCAL LOGIN =============================================================
  passport.use('local-login', new LocalStrategy({
      usernameField : 'email',
      passwordField : 'password'
      //passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not)
  },
  function( email, password, done) {
      if (email)
          email = email.toString().toLowerCase();
  
      // asynchronous
      process.nextTick(function() {
          User.findOne({ email:  email }, function(err, user) {
              // if there are any errors, return the error
              if (err)
                  return done(err);
  
              // if no user is found, return the message
              if (!user)
          //(/Users/sultan/Desktop/too2/controllers/users.js:39:28)
                  return done(null, false, {message: 'No user found.'});
  
              if (!user.validPassword(password))
                  return done(null, false, {message: 'Oops! Wrong Password'});
  
              // all is well, return user
              else
                  return done(null, user);
          });
      });
  
  }));
  </code></pre>
  
  <p>What is the cause of this error and how do I resolve it? </p>