Why do I need an async middleware wrapper?
Express 4 does not catch promise rejections from async middlewares. Wrap with Promise.resolve(fn(req, res, next)).catch(next) so rejections go to the error handler instead of being swallowed.
Verify This Answer
Cross-check this information using these trusted sources:
More FAQs in How to Write Custom Middleware in Express
Use the (req, res, next) signature. Do something with req or res, then call next() to continue or send a response to end the cycle. Keep middlewares small and one-job.
Write middleware for cross-cutting concerns (auth, validation, logging, request IDs, permissions). Put business logic in handlers or services. Middleware shapes the request; logic acts on it.
Use a factory function. The factory takes options and returns a middleware. Example: validate(schema) returns a middleware that validates against that schema. requireRole(role) returns a middleware that checks that role.
Still have questions?
Browse all our FAQs or reach out to our support team
