| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- import { Operator } from '../Operator';
 
- import { Subscriber } from '../Subscriber';
 
- import { Subscription } from '../Subscription';
 
- import { Observable } from '../Observable';
 
- import { MonoTypeOperatorFunction, TeardownLogic } from '../types';
 
- /**
 
-  * Returns an Observable that mirrors the source Observable, but will call a specified function when
 
-  * the source terminates on complete or error.
 
-  * @param {function} callback Function to be called when source terminates.
 
-  * @return {Observable} An Observable that mirrors the source, but will call the specified function on termination.
 
-  * @method finally
 
-  * @owner Observable
 
-  */
 
- export function finalize<T>(callback: () => void): MonoTypeOperatorFunction<T> {
 
-   return (source: Observable<T>) => source.lift(new FinallyOperator(callback));
 
- }
 
- class FinallyOperator<T> implements Operator<T, T> {
 
-   constructor(private callback: () => void) {
 
-   }
 
-   call(subscriber: Subscriber<T>, source: any): TeardownLogic {
 
-     return source.subscribe(new FinallySubscriber(subscriber, this.callback));
 
-   }
 
- }
 
- /**
 
-  * We need this JSDoc comment for affecting ESDoc.
 
-  * @ignore
 
-  * @extends {Ignored}
 
-  */
 
- class FinallySubscriber<T> extends Subscriber<T> {
 
-   constructor(destination: Subscriber<T>, callback: () => void) {
 
-     super(destination);
 
-     this.add(new Subscription(callback));
 
-   }
 
- }
 
 
  |