Skip to content
This repository was archived by the owner on Feb 26, 2024. It is now read-only.

Commit 2d4ff65

Browse files
JiaLiPassionmhevery
authored andcommitted
fix long-stack-trace zone will not render correctly when reject a promise (#403)
1 parent 02a41c0 commit 2d4ff65

File tree

4 files changed

+28
-3
lines changed

4 files changed

+28
-3
lines changed

dist/long-stack-trace-zone.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
return parentZoneDelegate.scheduleTask(targetZone, task);
119119
},
120120
onHandleError: function (parentZoneDelegate, currentZone, targetZone, error) {
121-
var parentTask = Zone.currentTask;
121+
var parentTask = Zone.currentTask || error.task;
122122
if (error instanceof Error && parentTask) {
123123
var descriptor = Object.getOwnPropertyDescriptor(error, 'stack');
124124
if (descriptor) {

dist/long-stack-trace-zone.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/zone-spec/long-stack-trace.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
onHandleError: function(parentZoneDelegate: ZoneDelegate, currentZone: Zone, targetZone: Zone,
8686
error: any): any
8787
{
88-
const parentTask = Zone.currentTask;
88+
const parentTask = Zone.currentTask || error.task;
8989
if (error instanceof Error && parentTask) {
9090
let descriptor = Object.getOwnPropertyDescriptor(error, 'stack');
9191
if (descriptor) {

test/zone-spec/long-stack-trace-zone.spec.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,31 @@ describe('longStackTraceZone', function () {
3232
}, 0);
3333
});
3434
});
35+
36+
it('should produce long stack traces when reject in promise', function(done) {
37+
lstz.runGuarded(function () {
38+
setTimeout(function () {
39+
setTimeout(function () {
40+
let promise = new Promise(function (resolve, reject) {
41+
setTimeout(function (){
42+
reject(new Error('Hello Promise'));
43+
}, 0);
44+
});
45+
promise.then(function() {
46+
fail('should not get here');
47+
});
48+
setTimeout(function () {
49+
try {
50+
expect(log[0].split('Elapsed: ').length).toBe(5);
51+
done();
52+
} catch (e) {
53+
expect(e).toBe(null);
54+
}
55+
}, 0);
56+
}, 0);
57+
}, 0);
58+
});
59+
});
3560
});
3661

3762
export var __something__;

0 commit comments

Comments
 (0)