Чтоб не терять this - используйте стрелочные функции, в отличии от обычных они используют this и arguments из замыкания
Если нужно выполнить несколько запросов последовательно, используйте цепочку промисов:
loadMember() {
return new Promise((resolve, reject) => {
db.query('sql...', (err, result) => {
if(err) {
return reject(err);
}
resolve(result);
}
}).then(result1 => {
return new Promise((resolve, reject) => {
//..
});
});
}
Ну и еще, если режектите промис - завершайте функцию обработчик через return
Если нужно выполнить несколько промисов параллельно - используйте
Promise.all([promise1, promise2 /*, ... */]).then(results => {});