|
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