diff --git a/index-fetch.js b/index-fetch.js index 0180b5865b9..3d1b811daa4 100644 --- a/index-fetch.js +++ b/index-fetch.js @@ -4,6 +4,10 @@ const { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global') const EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent') const fetchImpl = require('./lib/web/fetch').fetch +// Capture __filename at module load time for stack trace augmentation. +// This may be undefined when bundled in environments like Node.js internals. +const currentFilename = typeof __filename !== 'undefined' ? __filename : undefined + function appendFetchStackTrace (err, filename) { if (!err || typeof err !== 'object') { return @@ -30,7 +34,11 @@ function appendFetchStackTrace (err, filename) { module.exports.fetch = function fetch (init, options = undefined) { return fetchImpl(init, options).catch(err => { - appendFetchStackTrace(err, __filename) + if (currentFilename) { + appendFetchStackTrace(err, currentFilename) + } else if (err && typeof err === 'object') { + Error.captureStackTrace(err, module.exports.fetch) + } throw err }) } diff --git a/index.js b/index.js index 0dc12d62ecd..271c64e8ec3 100644 --- a/index.js +++ b/index.js @@ -121,6 +121,10 @@ module.exports.getGlobalDispatcher = getGlobalDispatcher const fetchImpl = require('./lib/web/fetch').fetch +// Capture __filename at module load time for stack trace augmentation. +// This may be undefined when bundled in environments like Node.js internals. +const currentFilename = typeof __filename !== 'undefined' ? __filename : undefined + function appendFetchStackTrace (err, filename) { if (!err || typeof err !== 'object') { return @@ -147,7 +151,11 @@ function appendFetchStackTrace (err, filename) { module.exports.fetch = function fetch (init, options = undefined) { return fetchImpl(init, options).catch(err => { - appendFetchStackTrace(err, __filename) + if (currentFilename) { + appendFetchStackTrace(err, currentFilename) + } else if (err && typeof err === 'object') { + Error.captureStackTrace(err, module.exports.fetch) + } throw err }) }