Retour à la leçonMission
Mission : une route qui plante le serveur sans jamais répondre au client
Corriger une erreur async non propagée qui laisse le client sans réponse, puis factoriser un contrôle d'accès dupliqué dans un middleware réutilisable.
Contexte
La route GET /orders/:id appelle await getOrder(req.params.id) dans un handler async sans try/catch, sur une API Express 4. Quand la base de données est temporairement indisponible, getOrder rejette une Promise, et le client reste bloqué jusqu'au timeout, sans jamais recevoir de réponse ni d'erreur 500. Par ailleurs, la vérification if (req.user?.role !== 'admin') return res.status(403)... est copiée-collée identique au début de 6 routes sensibles différentes.