diff --git a/src/shared/message_handler.js b/src/shared/message_handler.js index ee4122649..88c565775 100644 --- a/src/shared/message_handler.js +++ b/src/shared/message_handler.js @@ -223,6 +223,7 @@ MessageHandler.prototype = { }, cancel: (reason) => { + assert(reason instanceof Error, 'cancel must have a valid reason'); let cancelCapability = createPromiseCapability(); this.streamControllers[streamId].cancelCall = cancelCapability; this.streamControllers[streamId].isClosed = true; @@ -287,6 +288,7 @@ MessageHandler.prototype = { }, error(reason) { + assert(reason instanceof Error, 'error must have a valid reason'); if (this.isCancelled) { return; } diff --git a/test/unit/message_handler_spec.js b/test/unit/message_handler_spec.js index 908391e10..2eaee0030 100644 --- a/test/unit/message_handler_spec.js +++ b/test/unit/message_handler_spec.js @@ -13,7 +13,9 @@ * limitations under the License. */ -import { AbortException, createPromiseCapability } from '../../src/shared/util'; +import { + AbortException, createPromiseCapability, UnknownErrorException +} from '../../src/shared/util'; import { LoopbackPort } from '../../src/display/api'; import { MessageHandler } from '../../src/shared/message_handler'; @@ -149,7 +151,7 @@ describe('message_handler', function () { return sink.ready; }).then(() => { log += 'e'; - sink.error('error'); + sink.error(new Error('should not read when errored')); }); }); let messageHandler1 = new MessageHandler('main', 'worker', port); @@ -171,7 +173,8 @@ describe('message_handler', function () { return reader.read(); }).catch((reason) => { expect(log).toEqual('01pe'); - expect(reason).toEqual('error'); + expect(reason instanceof UnknownErrorException).toEqual(true); + expect(reason.message).toEqual('should not read when errored'); done(); }); });