Du blandar logik med återuppringningar och löften. Så du behöver inte återuppringningen, bara agera på det löfte som returneras:
myOffer._offered = undefined
myOffer.save()
.then(function() {
console.log("I get here and quit?");
})
.then(null,function(err) {
console.log(err);
});
Jag märkte att du gjorde ett nytt försök med Bluebird-löften, men det är inte nödvändigt eftersom om du implementerar som visas här kommer eventuella fel att dirigeras på rätt sätt.
Det finns noteringar om att mongooose 5.x är tänkt att ha en mer standardiserad inställning till löften och/eller direkt använda Bluebird-löften när den är konfigurerad