Я думаю, это потому, что вы не ожидаете разрешения асинхронного запроса
попробуйте это,
UserSchema.statics.findByToken = async function(token) {
var User = this;
var decoded;
try {
decoded = jwt.verify(token, 'abc123');
} catch (e) {
return Promise.reject();
}
return await User.findOne({
'_id': decoded._id,
'tokens.token': token,
'tokens.access': 'auth'
});
};