Skip to content

Commit 479975d

Browse files
author
molty3000
committed
fix(errors): add res param to onError hook and guard against internal throw
- onError(err, req, res): response object now available for observability - Wrap onError call in try/catch — hook failure must not suppress original error - Type definition updated: onError?: (error: Error, request: Request, response: Response) => void Closes #101
1 parent 944c17e commit 479975d

2 files changed

Lines changed: 10 additions & 0 deletions

File tree

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ declare namespace fastgateway {
5959
onRequest?: Function
6060
rewriteHeaders?: Function
6161
onResponse?: Function
62+
onError?: (error: Error, request: Request, response: Response) => void
6263
rewriteRequestHeaders?: Function
6364
request?: {
6465
timeout?: number

index.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,15 @@ const handler = (route, proxy, proxyHandler) => async (req, res, next) => {
173173
proxyHandler(req, res, req.url, proxy, proxyOpts)
174174
}
175175
} catch (err) {
176+
const { onError } = hooks
177+
if (typeof onError === 'function') {
178+
try {
179+
onError(err, req, res)
180+
} catch (_) {
181+
// onError hook failure must not suppress the original error
182+
}
183+
}
184+
176185
return next(err)
177186
}
178187
}

0 commit comments

Comments
 (0)