я не 100% не уверен но... из того что вы написали:
returns Promise if no callback passed
вам надо убрать колбэк. По поводу обработки ошибок из
спецификации async-functions мы должны переписать функцию так:
async userExistsInDB(email) {
let userExists;
try {
const db = await MongoClient.connect('mongodb://127.0.0.1:27017/notificator');
} catch (err) {
throw err; // тут у вас никакой обработки ошибок небыло... можно и без try/catch тогда
}
const collection = db.collection('users');
userExists = await collection.find({email: email}).limit(1).count() > 0;
console.log("INSIDE:\n", userExists);
db.close();
console.log("OUTSIDE:\n", userExists);
return userExists;
}
код в дальнейшем можно еще упростить. Суть в том что при использовании await нет смысла в колбэках. Все происходит синхронно (с точки зрения потока управления, блокировок конечно же не будет).