import { Subscriber } from '../Subscriber';
|
import { Subject } from '../Subject';
|
|
/**
|
* Determines whether the ErrorObserver is closed or stopped or has a
|
* destination that is closed or stopped - in which case errors will
|
* need to be reported via a different mechanism.
|
* @param observer the observer
|
*/
|
export function canReportError(observer: Subscriber<any> | Subject<any>): boolean {
|
while (observer) {
|
const { closed, destination, isStopped } = observer as any;
|
if (closed || isStopped) {
|
return false;
|
} else if (destination && destination instanceof Subscriber) {
|
observer = destination;
|
} else {
|
observer = null;
|
}
|
}
|
return true;
|
}
|