fix(zone.js): fix zone for Jasmine 3.3. (#31497)

If zonejs is sent undefined callbacks it proceeds to attempt to call them, then fails, catches it own fail, rewrites the stack to hide the mistake, and reports a TypeError with a callstack unrelated to inputs.

Throw early if the callback is undefined (as can happen if JS or any-ified TS calls zone invokeTask).

Check for undefined onCommplete callback to zonejs jasmine wrapper.

PR Close #31497
This commit is contained in:
vikerman
2019-07-10 15:40:31 -07:00
committed by Matias Niemelä
parent 32aa18be78
commit c4c340a7c4
2 changed files with 11 additions and 6 deletions

View File

@ -1217,6 +1217,9 @@ const Zone: ZoneType = (function(global: any) {
this.data = options;
this.scheduleFn = scheduleFn;
this.cancelFn = cancelFn;
if (!callback) {
throw new Error('callback is not defined');
}
this.callback = callback;
const self = this;
// TODO: @JiaLiPassion options should have interface