Исторически сперва появились коллбэки, затем промисы, затем async/await.
При этом промисы от коллбэков отличаются кардинально, а async/await можно рассматривать как "сахар" к промисам. В идеале везде использовать async/await, там где это невозможно или неудобно - промисы, и еще реже коллбэки.