11import { Observable } from '../Observable' ;
22import { Subscription } from '../Subscription' ;
3- import { tryCatch } from '../util/tryCatch' ;
4- import { errorObject } from '../util/errorObject' ;
53import { Subscriber } from '../Subscriber' ;
64
75/**
@@ -71,26 +69,35 @@ export class FromEventPatternObservable<T, R> extends Observable<T> {
7169 }
7270
7371 protected _subscribe ( subscriber : Subscriber < T > ) {
74- const addHandler = this . addHandler ;
7572 const removeHandler = this . removeHandler ;
76- const selector = this . selector ;
7773
78- const handler = selector ? function ( e : any ) {
79- let result = tryCatch ( selector ) . apply ( null , arguments ) ;
80- if ( result === errorObject ) {
81- subscriber . error ( result . e ) ;
82- } else {
83- subscriber . next ( result ) ;
84- }
74+ const handler = ! ! this . selector ? ( ...args : Array < any > ) => {
75+ this . _callSelector ( subscriber , args ) ;
8576 } : function ( e : any ) { subscriber . next ( e ) ; } ;
8677
87- let result = tryCatch ( addHandler ) ( handler ) ;
88- if ( result === errorObject ) {
89- subscriber . error ( result . e ) ;
90- }
78+ this . _callAddHandler ( handler , subscriber ) ;
9179 subscriber . add ( new Subscription ( ( ) => {
9280 //TODO: determine whether or not to forward to error handler
9381 removeHandler ( handler ) ;
9482 } ) ) ;
9583 }
96- }
84+
85+ private _callSelector ( subscriber : Subscriber < T > , args : Array < any > ) : void {
86+ try {
87+ const result : T = this . selector ( ...args ) ;
88+ subscriber . next ( result ) ;
89+ }
90+ catch ( e ) {
91+ subscriber . error ( e ) ;
92+ }
93+ }
94+
95+ private _callAddHandler ( handler : ( e : any ) => void , errorSubscriber : Subscriber < T > ) : void {
96+ try {
97+ this . addHandler ( handler ) ;
98+ }
99+ catch ( e ) {
100+ errorSubscriber . error ( e ) ;
101+ }
102+ }
103+ }
0 commit comments