Причината е:"Заявката се изпълнява, ако е подадено обратно извикване, в противен случай се връща обект на Query." (под раздела за връщане)
.then()
всъщност не е обещание, то е прикрито от mongoose, но действа като екзекуция.
Можете да видите как изпълнява заявки тук
.exec()
от документация
„Изпълнява заявката“ и връща обещание (вярно)