///
module Rx {
export interface Observable {
/**
* Continues an observable sequence that is terminated by an exception with the next observable sequence.
* @param {Mixed} handlerOrSecond Exception handler function that returns an observable sequence given the error that occurred in the first sequence, or a second observable sequence used to produce results when an error occurred in the first sequence.
* @returns {Observable} An observable sequence containing the first sequence's elements, followed by the elements of the handler sequence in case an exception occurred.
*/
catch(handler: (exception: any) => ObservableOrPromise): Observable;
/**
* Continues an observable sequence that is terminated by an exception with the next observable sequence.
* @param {Mixed} handlerOrSecond Exception handler function that returns an observable sequence given the error that occurred in the first sequence, or a second observable sequence used to produce results when an error occurred in the first sequence.
* @returns {Observable} An observable sequence containing the first sequence's elements, followed by the elements of the handler sequence in case an exception occurred.
*/
catch(second: ObservableOrPromise): Observable;
}
}
(function() {
var o: Rx.Observable;
var io: Rx.IObservable;
var p: Rx.Promise;
o = o.catch((e) => o);
o = o.catch((e) => io);
o = o.catch((e) => p);
o = o.catch(o);
o = o.catch(io);
o = o.catch(p);
});