express js не отправляет ответ после тайм-аута из-за отключения подключения MongoDB

#mongodb #express #mongoose

Вопрос:

для обработки исключений обещаний асинхронных операций mongoose я делаю так:

 router.get("/", async (req, res) => {
  try {
    const user = await User.find().lean().sort("name");
    res.send(user);
  } catch (error) {
    console.log("...faild");
    res.status(500).send("something wrong");
  }
});
 

но хотя контроль попадает в блок захвата и …сообщение об ошибке регистрируется в консоли, но ответ не получен в клиенте, и время ожидания подключения истекает, тогда, если я отправлю еще один повторяющийся запрос, я получу ответ с кодом 500!?
Я догадался, что это из-за задержки монго-получателя до появления ошибки подключения, и я проверил это, чтобы убедиться:

 router.get("/", async (req, res, next) => {
  try {
    await (() => {
      const p = new Promise();
      p.reject("rejected");
    })();
  } catch (error) {
    console.log("...faild");
    res.status(500).send("something wrong");
  }
});
 

затем ответ отправлен должным образом. почему это происходит и как я мог бы это исправить?