Если тебе нужно один then - то лучше использовать его, чтобы не оборачивать всё в async. Если.же их много, то будет chaining hell и поэтому лучше async await
Коллбэки да, зло) а вот чейнить или более свежий синтаксический сахар asinc/await - тут больше по желанию, хотя больше людей топят за последнее, но некоторые решения лично я не смог сделать через asinc))