Подскажите, нужно ли писать async для анонимного коллбэка в данном случае?

Или данный callback по умолчанию является асинхронным?

https.createServer(options, async (req, res) => {
    req.on("data", data => {
        // ...
    });
});

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

Автор решения: Денис Степанов

В большинстве случаях callback функции выполняются синхронно, а вызываются асинхронно. Иногда бывает, что функция callback вызывается то синхронно, то асинхронно, но такое непредсказуемое поведение является ошибкой проектирования, сложно дебажится и приносит уйму геморроя всем, кто с ней будет работать. Это не значит, что их надо объявлять с ключевым словом async, тут речь идет о том, что эта функция выполнится при достижении какого-то результата (получения запроса от API, истечению таймаута, записи в файл и тд).

Сам по себе шаблон обратных вызовов довольно таки стар, и появился задолго до добавления async функций.

Но иногда бывает полезно использовать асинхронные функции в callbacka-x. Например, если при получении запроса вам надо обратиться к базе данных, то сам запрос к базе данных является асинхронным и в данном случае это уместно.

→ Ссылка
Автор решения: Teivaz

Ключевое слово async по факту означает Promise. И следовательно, его нужно добавлять только если API ожидает Promise. Как правило либо в функцию передаётся callback, либо ожидается Promise. Вместе их не используют.

→ Ссылка