El problema que tiene es que las consultas mongoose no devuelven promesas completas, citando directamente http:// 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'));
En otras palabras, el then
la función es azúcar de sintaxis y no una promise
por eso el bind
y otras funciones de promesa no funcionan.
Para que funcione, lo envuelve en una promesa completa o usa el exec
funciona como se sugiere en los documentos