sdk_contrib/fastify/lib/hooks/on-response.hook.js (31 lines of code) (raw):

const AWSXRay = require('aws-xray-sdk-core'); const { middleware: mwUtils } = AWSXRay; /** @type {import('fastify').onResponseHookHandler} */ module.exports = function onResponseHook(request, reply, done) { try { const { segment } = request; if (!segment || segment.isClosed()) { return done(); } if (reply.statusCode >= 400) { if (reply.statusCode === 429) { segment.addThrottleFlag(); } const cause = AWSXRay.utils.getCauseTypeFromHttpStatus(reply.statusCode); if (cause) { segment[cause] = true; } } if (segment.http) { segment.http.close(reply.raw); } segment.close(); mwUtils.middlewareLog( 'Closed Fastify XRay segment successfully', request.url, segment ); done(); } catch (error) { done(error); } };