Vấn đề bạn đang gặp phải là các truy vấn mongoose không trả lại các lời hứa chính thức đầy đủ - trích dẫn trực tiếp https:// mongoosejs.com/docs/promises.html (v4.7.6)
// A query is not a fully-fledged promise, but it does have a `.then()`.
query.then(function (doc) {
// use doc
});
// `.exec()` gives you a fully-fledged promise
var promise = query.exec();
assert.ok(promise instanceof require('mpromise'));
Nói cách khác, then hàm là đường cú pháp và không phải là promise đó là lý do tại sao bind và các chức năng hứa hẹn khác không hoạt động.
Để làm cho nó hoạt động, bạn có thể kết thúc nó trong một lời hứa đầy đủ hoặc sử dụng exec chức năng như được đề xuất trong tài liệu