Skip to content

Comments

fix: capture async stack only for rejections with native error object…#5

Open
MitchLewis930 wants to merge 1 commit intopr_025_beforefrom
pr_025_after
Open

fix: capture async stack only for rejections with native error object…#5
MitchLewis930 wants to merge 1 commit intopr_025_beforefrom
pr_025_after

Conversation

@MitchLewis930
Copy link

PR_025

@MitchLewis930 MitchLewis930 requested a review from Copilot January 31, 2026 00:53
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes a bug where async stack traces were being incorrectly captured for non-Error rejections. The fix ensures stack trace augmentation only occurs when the rejected value is an instance of the native Error object.

Changes:

  • Modified the stack trace capture logic to only apply to Error instances
  • Refactored test case to use async/await pattern instead of callbacks
  • Added safety checks for stack property existence

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
lib/core/Axios.js Added instanceof Error check to conditionally capture and augment stack traces only for Error objects
test/unit/adapters/http.js Converted callback-based test to async/await pattern using startHTTPServer helper

Comment on lines +43 to +45
let dummy;

Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
Copy link

Copilot AI Jan 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The ternary operator assigns different types to dummy (object vs Error instance). This inconsistency could cause issues when accessing properties. Consider using dummy = {}; Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy.stack = new Error().stack); to keep dummy consistently as a plain object.

Suggested change
let dummy;
Error.captureStackTrace ? Error.captureStackTrace(dummy = {}) : (dummy = new Error());
let dummy = {};
if (Error.captureStackTrace) {
Error.captureStackTrace(dummy);
} else {
dummy.stack = (new Error()).stack;
}

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants