1+ import { isFunction } from '../util/isFunction' ;
12import { Observable } from '../Observable' ;
23import { Subscription } from '../Subscription' ;
34import { Subscriber } from '../Subscriber' ;
@@ -45,7 +46,7 @@ export class FromEventPatternObservable<T> extends Observable<T> {
4546 * @param {function(handler: Function): any } addHandler A function that takes
4647 * a `handler` function as argument and attaches it somehow to the actual
4748 * source of events.
48- * @param {function(handler: Function, signal?: any): void } removeHandler A function that
49+ * @param {function(handler: Function, signal?: any): void } [ removeHandler] An optional function that
4950 * takes a `handler` function as argument and removes it in case it was
5051 * previously attached using `addHandler`. if addHandler returns signal to teardown when remove,
5152 * removeHandler function will forward it.
@@ -58,13 +59,13 @@ export class FromEventPatternObservable<T> extends Observable<T> {
5859 * @owner Observable
5960 */
6061 static create < T > ( addHandler : ( handler : Function ) => any ,
61- removeHandler : ( handler : Function , signal ?: any ) => void ,
62+ removeHandler ? : ( handler : Function , signal ?: any ) => void ,
6263 selector ?: ( ...args : Array < any > ) => T ) {
6364 return new FromEventPatternObservable ( addHandler , removeHandler , selector ) ;
6465 }
6566
6667 constructor ( private addHandler : ( handler : Function ) => any ,
67- private removeHandler : ( handler : Function , signal ?: any ) => void ,
68+ private removeHandler ? : ( handler : Function , signal ?: any ) => void ,
6869 private selector ?: ( ...args : Array < any > ) => T ) {
6970 super ( ) ;
7071 }
@@ -78,6 +79,10 @@ export class FromEventPatternObservable<T> extends Observable<T> {
7879
7980 const retValue = this . _callAddHandler ( handler , subscriber ) ;
8081
82+ if ( ! isFunction ( removeHandler ) ) {
83+ return ;
84+ }
85+
8186 subscriber . add ( new Subscription ( ( ) => {
8287 //TODO: determine whether or not to forward to error handler
8388 removeHandler ( handler , retValue ) ;
0 commit comments