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

fix(rxjs): asap should runGuarded to let error inZone#884

Merged
mhevery merged 2 commits intoangular:masterfrom
JiaLiPassion:rxjs-error
Aug 23, 2017
Merged

fix(rxjs): asap should runGuarded to let error inZone#884
mhevery merged 2 commits intoangular:masterfrom
JiaLiPassion:rxjs-error

Conversation

@JiaLiPassion
Copy link
Copy Markdown
Collaborator

fix angular/angular#14316.

    const constructorZone: Zone = Zone.root.fork({
    name: 'Constructor Zone',
    onHandleError: (delegate: ZoneDelegate, currentZone: Zone, targetZone: Zone, error: Error) => {
      log.push('error' + error.message);
      const result = delegate.handleError(targetZone, error);
      errorCallback && errorCallback();
      return false;
    }
  });
     let observable: any;
       constructorZone.run(() => {
         observable = Rx.Observable.of(1, 2, 3).observeOn(Rx.Scheduler.asap);
       });

       errorCallback = () => {
         expect(log).toEqual(['erroroops']);
         setTimeout(done, 0);
       };

       Zone.root.run(() => {
         observable
             .map((value: number) => {
               if (value === 3) {
                 throw new Error('oops');
               }
               return value;
             })
             .subscribe((value: number) => {});
       });

the case like this will reproduce the error, error will not in constructor zone if error throws with asap.
we should use zone.runGuarded in patched Immediate.

@mhevery
Copy link
Copy Markdown
Contributor

mhevery commented Aug 23, 2017

@JiaLiPassion Can you look into why the build is red?

@JiaLiPassion
Copy link
Copy Markdown
Collaborator Author

JiaLiPassion commented Aug 23, 2017

@mhevery , sure , I will check it. It seems saucelabs down, I will restart the build.

@mhevery mhevery merged commit ce3f12f into angular:master Aug 23, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Error thrown by rxjs observer not always sent to ErrorHandler.handleError

3 participants