diff --git a/spec/Observable-spec.ts b/spec/Observable-spec.ts index 5e8f2c5d61..9ce73c4f63 100644 --- a/spec/Observable-spec.ts +++ b/spec/Observable-spec.ts @@ -46,6 +46,18 @@ describe('Observable', () => { }); }); + it('should not send error to error handler for observable have source', () => { + const source = Observable.of(1); + const observable = new Observable(); + (observable as any).source = source; + + expect(() => { + observable.subscribe((x) => { + throw new Error('error'); + }); + }).to.throw(); + }); + describe('forEach', () => { it('should iterate and return a Promise', (done: MochaDone) => { const expected = [1, 2, 3]; diff --git a/src/Observable.ts b/src/Observable.ts index 2449a61337..c5be1388ab 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -198,7 +198,7 @@ export class Observable implements Subscribable { if (operator) { operator.call(sink, this.source); } else { - sink.add(this._trySubscribe(sink)); + sink.add(this.source ? this._subscribe(sink) : this._trySubscribe(sink)); } if (sink.syncErrorThrowable) {