मेरा मानना है कि आपका दूसरा then(..)
इस तरह दिखना चाहिए:
.then(function(book){
return new Promise(function(resolve, reject){
BookModel.find({ name: book.name }, function(err, docs) {
if (docs.length) {
reject({message: "Book already exists"});
} else {
resolve(book);
}
});
});
})