Вкус async / await ES2017

Одна действительно захватывающая вещь для JS Developer, что на прошлой неделе был удален Node 7.6, который обеспечивал поддержку async / await. Если вы раньше не слышали об async / await, это потрясающее обновление для JavaScript (ES2017), которое позволяет нам писать синхронно выглядящий асинхронный код без вложенных обратных вызовов или даже связанных .then() обещаний.

/* Forgot Password Flow*/
export default forgotPassword = async(req,res,next) => {
  // Checking if user exist
  const user = await User.findOne({email : req.body.email}) ;
     
     if(!user){
       req.flash = ('error' , 'No Account found with this email');
       return res.redirect('/login')
     }
// Set password reset token for user
  user.resetPasswordToken = crypto.randomBytes(20).toString('hex');
  user.resetPasswordExpires = Date.now() + 3600000 ; // 1 hour
  await user.save()
// Sent Password reset email to User
  await mail.send({
     user,
     file:'password-reset',
     resetUrl : `http://${req.headers.host}/account/reset/${user.resetPasswordToken}`,
     subject: 'Password Reset'
   });
req.flash('success', 'You have been emailed a password reset link.');
res.redirect('/login');
};

Особая благодарность Уэсу Босу :)