import { createErrorClass } from './createErrorClass'; | |
export interface UnsubscriptionError extends Error { | |
readonly errors: any[]; | |
} | |
export interface UnsubscriptionErrorCtor { | |
/** | |
* @deprecated Internal implementation detail. Do not construct error instances. | |
* Cannot be tagged as internal: https://github.com/ReactiveX/rxjs/issues/6269 | |
*/ | |
new (errors: any[]): UnsubscriptionError; | |
} | |
/** | |
* An error thrown when one or more errors have occurred during the | |
* `unsubscribe` of a {@link Subscription}. | |
*/ | |
export const UnsubscriptionError: UnsubscriptionErrorCtor = createErrorClass( | |
(_super) => | |
function UnsubscriptionErrorImpl(this: any, errors: (Error | string)[]) { | |
_super(this); | |
this.message = errors | |
? `${errors.length} errors occurred during unsubscription: | |
${errors.map((err, i) => `${i + 1}) ${err.toString()}`).join('\n ')}` | |
: ''; | |
this.name = 'UnsubscriptionError'; | |
this.errors = errors; | |
} | |
); | |