2. async функция всегда возвращает промис. По сути своей async/await - это синтаксический сахар позволяющий неявно создавать сложные цепочки промисов и не более того.
1. Классическое решение: забыть про построчное написание кода и передавать вторым параметром callback и вызывать оный по завершению запроса.
//...
query(sql, callback) {
this.sql.query(sql, function (err, result) {
if (err) throw err;
callback(result);
});
}
//...
function nextStep(result) {
console.log(result);
}
db.query("SELECT * FROM tbl_chat_room_users", nextStep);
Современное решение: использовать async/await и выполнять нужную цепочку в рамках async функции:
(async function(){
let result = await db.query("SELECT * FROM tbl_chat_room_users");
console.log(result);
//...
}())