@@ -37,29 +37,36 @@ module.exports = {
3737 } )
3838
3939 const errorHandler = createMiddleware ( async ( c , next ) => {
40+ let rethrow = false
41+
4042 try {
4143 // Catch non-errors thrown in routes without causing the route to hang by awaiting the next() call inside a try/catch block.
4244 // The error is then attached to the context and processed in the same way as errors thrown in routes.
4345 await next ( )
4446 } catch ( err ) {
4547 c . error = err
48+ rethrow = true
4649 }
4750
48- if ( ! c . error || ! client . _config . autoDetectErrors ) return
51+ if ( ! c . error ) return
4952
50- const event = client . Event . create ( c . error , false , handledState , 'hono middleware' , 1 )
53+ if ( client . _config . autoDetectErrors ) {
54+ const event = client . Event . create ( c . error , false , handledState , 'hono middleware' , 1 )
5155
52- if ( c . bugsnag ) {
53- c . bugsnag . _notify ( event )
54- } else {
55- client . _logger . warn (
56- 'c.bugsnag is not defined. Make sure the @bugsnag/plugin-hono requestHandler middleware is added first.'
57- )
58- const { metadata, request } = await getRequestAndMetadataFromReq ( c )
59- event . request = { ...event . request , ...request }
60- event . addMetadata ( 'request' , metadata )
61- client . _notify ( event )
56+ if ( c . bugsnag ) {
57+ c . bugsnag . _notify ( event )
58+ } else {
59+ client . _logger . warn (
60+ 'c.bugsnag is not defined. Make sure the @bugsnag/plugin-hono requestHandler middleware is added first.'
61+ )
62+ const { metadata, request } = await getRequestAndMetadataFromReq ( c )
63+ event . request = { ...event . request , ...request }
64+ event . addMetadata ( 'request' , metadata )
65+ client . _notify ( event )
66+ }
6267 }
68+
69+ if ( rethrow ) throw c . error
6370 } )
6471
6572 return { requestHandler, errorHandler }
0 commit comments