diff --git a/src/lib/viewers/BaseViewer.js b/src/lib/viewers/BaseViewer.js index 43492dd29..208e14be8 100644 --- a/src/lib/viewers/BaseViewer.js +++ b/src/lib/viewers/BaseViewer.js @@ -299,7 +299,7 @@ class BaseViewer extends EventEmitter { */ handleAssetError(err) { const originalMessage = err ? err.message : ''; - const error = new PreviewError(ERROR_CODE.LOAD_ASSET, '', {}, originalMessage); + const error = err instanceof PreviewError ? err : new PreviewError(ERROR_CODE.LOAD_ASSET, originalMessage, {}); this.triggerError(error); this.destroyed = true; } diff --git a/src/lib/viewers/__tests__/BaseViewer-test.js b/src/lib/viewers/__tests__/BaseViewer-test.js index dc9d2a232..05a128b26 100644 --- a/src/lib/viewers/__tests__/BaseViewer-test.js +++ b/src/lib/viewers/__tests__/BaseViewer-test.js @@ -205,6 +205,13 @@ describe('lib/viewers/BaseViewer', () => { expect(base.destroyed).to.be.true; }); + it('should use the original error if it is a PreviewError', () => { + sandbox.stub(base, 'triggerError'); + const originalError = new PreviewError('foo', 'bar'); + base.handleAssetError(originalError); + expect(base.triggerError).to.be.calledWith(originalError); + }); + it('should pass along the error if provided', () => { const stub = sandbox.stub(base, 'triggerError');