Вопрос проверяет понимание того, как async/await работает поверх Promise.
Любая async-функция всегда возвращает Promise. Если функция возвращает обычное значение, оно автоматически оборачивается в Promise.resolve. Если внутри происходит throw, возвращается Promise.reject. await не меняет тип возвращаемого значения функции.
async/await — это синтаксический сахар над Promise.
Async-функция — функция, которая всегда возвращает Promise, независимо от того, что возвращается внутри.
async function getNumber() {
return 5;
}
getNumber().then(console.log); // 5
Эквивалентно:
function getNumber() {
return Promise.resolve(5);
}
async function fail() {
throw new Error("Oops");
}
fail().catch(console.error);
async function fetchData() {
const data = await Promise.resolve("data");
return data;
}
await приостанавливает выполнение функции, но не блокирует основной поток.
Внешний код всегда работает с Promise.
async-функция — это всегда Promise, а await лишь упрощает работу с асинхронным кодом, не меняя модель выполнения.