Called after the middleware is executed
Called before the middleware is executed
Called when the middleware errors
Called after the middleware is executed