Skip to content

Commit 2a5b89b

Browse files
committed
rethrow caught errors when awaiting next
1 parent eb28535 commit 2a5b89b

1 file changed

Lines changed: 19 additions & 12 deletions

File tree

packages/plugin-hono/src/hono.js

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)