1import { Subscriber } from '../Subscriber'; 2import { Subject } from '../Subject'; 3 4/** 5 * Determines whether the ErrorObserver is closed or stopped or has a 6 * destination that is closed or stopped - in which case errors will 7 * need to be reported via a different mechanism. 8 * @param observer the observer 9 */ 10export function canReportError(observer: Subscriber<any> | Subject<any>): boolean { 11 while (observer) { 12 const { closed, destination, isStopped } = observer as any; 13 if (closed || isStopped) { 14 return false; 15 } else if (destination && destination instanceof Subscriber) { 16 observer = destination; 17 } else { 18 observer = null; 19 } 20 } 21 return true; 22} 23