Зачем нужен then в промисах если есть await?
«Вначале были промисы»
Затем, позже, сделали разноцветный синтаксический фантик для них — async / await

У промисов держателем кнопки «пауза» являтся очередной промис. У этого промиса, как будильника, можно вызвать метод then() — как приклеить стикер на циферблат, где написано, что надо будет сделать, когда время придёт. 
В приклеенный метод then() ничего не попадает «сразу». Вернее, в него сразу передают 2 функции: одну вызовут, когда промис выполнится; вторую – если обломается: .then(onResolve,  onError)
Стоит будильник, на нём наклейка then, на ней написано, что сделать, если ОК и если облом. Ждём-с. Тикает.

await прячет под капот движка JS лишние провода, и наверху просто возвращает результат выполненной асинхроты. Или кидает Exception в случае облома — его надо ловить обычными try..catch

Перечитав вопрос, предположу, что неправильно готовили промис с запросом. Надо примерно так:const requestPromise = new Promise(function(res, rej) {
  setTimeout( function(result){ // имитация асинхр запроса куда-то
    // тут, типа, наконец получили ответ
    if (result.error_code) {
      rej(error_code); // облом
    } else {
      res(result); // обещание выполнено с результатом
    }
  }, 2000);
});

// здесь requestPromise – это Promise в статусе "pending"

requestPromise.then( // сюда ничего не попадает «сразу». Оно внутри ждёт. Терпеливо.
  function(result) {console.log(result, "мы молодцы");},
  function(error) {console.error(error, "облом вышел");},
);При желании можно навесить ещё собак then'ов на тот же Promise:requestPromise.then(r => console.log("result log:", r));
Вы можете дожидаться момента выполнения промиса или через then, или через await. Await делает почти то же самое, что и then. Только await — синтаксическая фишка, а then — семантическая. Если нужно уточнить — спрашивайте.