Как обеспечить правильное «это» с Promise.promisify?

Я пытаюсь перестроить свой сервер nodejs, используя обещания с библиотекой Bluebird, но я застрял в простой проблеме.

После получения пользователей из моей базы данных, я хочу перечислить все классы уведомлений, связанные с этим пользователем:

Bad Way (работает ...)

adapter.getUsers(function(users){
    users.rows.forEach(function(item){
        user = item.username;
        adapter.getNotifications(user, function(notificationList){
            console.log(notificationList);
        })
    });
});

Элегантный пробный способ (не работает ...)

var getNotifications = Promise.promisify(adapter.getNotifications);
adapter.getUsers().then(function(users) {
    users.rows.forEach(function(item){
        var dbUser = "sigalei/" + item.value.name;
        console.log(dbUser);
        return getNotifications(dbUser);
    });
}).then(function(result){
    console.log(result);
    console.log("NOTIFICATIONLIST");
});

Однако, когда я выполняю этот код, я получаю эту ошибку внутри моего метода getNotification:

Необработанный отказ TypeError: Невозможно прочитать свойство 'nano' из undefined в Adapter.getNotifications (/Users/DaniloOliveira/Workspace/sigalei-api/api/tools/couchdb-adapter.js:387:30) в tryCatcher (/ Users / DaniloOliveira / Рабочая область / sigalei-API / node_modules / Bluebird / JS / основные / util.js: 26: 23)

РЕДАКТИРОВАТЬПосле ценных комментариев пользователя 2864740 я заметил, что ошибка связана с некоторой проблемой объема. Итак, почему после использования метода promisify метод dont getNotifications распознает переменную "this" env?

var Adapter = module.exports = function(config) {
    this.nano = require('nano')({
        url: url,
        request_defaults: config.request_defaults
    });
};

Adapter.prototype.getNotifications = function(userDb, done) {

    var that = this;
    console.log(that);
    var userDbInstance = that.nano.use(userDb);
    userDbInstance.view('_notificacao', 'lista',
      {start_key: "[false]", end_key: "[false,{}]"},
      function(err, body) {
        if(err){ done(err); }
        done(body);
    });

};

Ответы на вопрос(2)

Ваш ответ на вопрос