fix: Fix toString usage for function wrapped using wrap method #1135
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #1132 (comment)
It broke, because
zone.js
has some code that's triggered for IE/Edge only, and it modified calls context – https://github.com/angular/zone.js/blob/dcc285aab37bdd90b6d7133fc73045100861c61c/lib/browser/event-target.ts#L67-L97This caused all
wrap
calls to be passed through it, and calledtoString
on them – https://github.com/angular/zone.js/blob/dcc285aab37bdd90b6d7133fc73045100861c61c/lib/browser/event-target.ts#L82 Because of that,function wrapped
, which we return fromwrap
calls was given as a context toFunction.prototype.toString.apply
, as it also contains__raven__
flag set totrue
.`The problem was, that all functions wrapped with either
wrap
andfill
had mentioned__raven__
flags, but original function on one of them was called__inner__
and one__orig_method__
. This was untraceable with tests, as it's just an odd edge case, wherezone.js
overrides all API methods and thencore.js
polyfills some of them.Oh well... ¯_(ツ)_/¯