app.Use((ctx, next) => {
try {
await next();
} catch(Exception exception) {
ctx.Response.WriteAsync(/*Как-то форматируем наше сообщение об ошибке - обычно в объект. И отдаём 500й код */);
// Ещё есть смысл залоггировать это и сообщить разрабам, ибо 500й код - это недоработка логики.
}
});
Как посмотреть какой запрос генерится?
2. Асинхронность != многопоточность. Если используется небольшой пул потоков, то долгие задачи будут их занимать, а новые не будут запускаться. Ещё веселее, если для всех асинков используется один поток.
PS: не шарю как конкретно работает std::async в плюсах. Но не думаю, что плюсовая асинхронность как-то очень сильно отличается от всего мира.