await не ожидает выполнения функции

Почему await в данном случае не позволят дождаться функции t и сразу же выводится 0?

async function TEST() {
  let a = 0;

  let t = () => {
    setTimeout(() => {
      a++;
    });
  }

  await t();
  console.log(a);
}
TEST();

Ответы (1 шт):

Автор решения: vsemozhebuty

await ожидает только функции, возвращающие Promise, а t в вашем примере — другой тип асинхронной функции, использующей колбек.

Работающий вариант, близкий к вашему:

async function TEST() {
  let a = 0;

  const t = () => new Promise((resolve) => {
    setTimeout(() => { a++; resolve(); }, 0);
  });

  await t();
  console.log(a);
}
TEST();

Подробнее см. в https://learn.javascript.ru/async

→ Ссылка