|
59 | 59 | return err.stack || err['opera#sourceloc'];
|
60 | 60 | }
|
61 | 61 |
|
| 62 | + function _filtered(stackframes, filter) { |
| 63 | + if (typeof filter === 'function') { |
| 64 | + return stackframes.filter(filter); |
| 65 | + } |
| 66 | + return stackframes; |
| 67 | + } |
| 68 | + |
62 | 69 | return {
|
63 | 70 | /**
|
64 | 71 | * Get a backtrace from invocation point.
|
|
68 | 75 | */
|
69 | 76 | get: function StackTrace$$get(opts) {
|
70 | 77 | var err = _generateError();
|
71 |
| - if (_isShapedLikeParsableError(err)) { |
72 |
| - return this.fromError(err, opts); |
73 |
| - } else { |
74 |
| - return this.generateArtificially(opts); |
75 |
| - } |
| 78 | + return _isShapedLikeParsableError(err) ? this.fromError(err, opts) : this.generateArtificially(opts); |
76 | 79 | },
|
77 | 80 |
|
78 | 81 | /**
|
|
85 | 88 | getSync: function StackTrace$$getSync(opts) {
|
86 | 89 | opts = _merge(_options, opts);
|
87 | 90 | var err = _generateError();
|
88 |
| - var stackframes; |
89 |
| - |
90 |
| - if (_isShapedLikeParsableError(err)) { |
91 |
| - stackframes = ErrorStackParser.parse(err); |
92 |
| - } else { |
93 |
| - stackframes = StackGenerator.backtrace(opts); |
94 |
| - } |
95 |
| - |
96 |
| - if (typeof opts.filter === 'function') { |
97 |
| - stackframes = stackframes.filter(opts.filter); |
98 |
| - } |
99 |
| - return stackframes; |
| 91 | + var stack = _isShapedLikeParsableError(err) ? ErrorStackParser.parse(err) : StackGenerator.backtrace(opts); |
| 92 | + return _filtered(stack, opts.filter); |
100 | 93 | },
|
101 | 94 |
|
102 | 95 | /**
|
|
110 | 103 | opts = _merge(_options, opts);
|
111 | 104 | var gps = new StackTraceGPS(opts);
|
112 | 105 | return new Promise(function(resolve) {
|
113 |
| - var stackframes = ErrorStackParser.parse(error); |
114 |
| - if (typeof opts.filter === 'function') { |
115 |
| - stackframes = stackframes.filter(opts.filter); |
116 |
| - } |
| 106 | + var stackframes = _filtered(ErrorStackParser.parse(error), opts.filter); |
117 | 107 | resolve(Promise.all(stackframes.map(function(sf) {
|
118 | 108 | return new Promise(function(resolve) {
|
119 | 109 | function resolveOriginal() {
|
|
0 commit comments