From 35cd9065928db185b56c1f75adf8a341d1724b2e Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Mon, 18 Dec 2017 18:48:16 -0500 Subject: [PATCH 1/2] test: failing test for delayed second client connection --- test/__throw_rejected_promises.js | 3 +++ test/host.js | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 test/__throw_rejected_promises.js diff --git a/test/__throw_rejected_promises.js b/test/__throw_rejected_promises.js new file mode 100644 index 0000000..5ab624f --- /dev/null +++ b/test/__throw_rejected_promises.js @@ -0,0 +1,3 @@ +'use strict'; + +process.on('unhandledRejection', e => { process._rawDebug(e); process.exit(1); }); diff --git a/test/host.js b/test/host.js index 54fa447..9782158 100644 --- a/test/host.js +++ b/test/host.js @@ -126,8 +126,16 @@ describe('host', () => { onEvent.should.have.been.calledWith('ready'); }); + it('should not error when client connects after initial client', (done) => { + host + .connect() + .then(() => { + host._receiveEvent('ready'); + }) + .then(done, done); + host._receiveEvent('ready'); + }); }); }); - }); From 220943ac5e3c6167dd6356679a4d11ea823f2aa3 Mon Sep 17 00:00:00 2001 From: Owen Smith Date: Mon, 18 Dec 2017 18:49:55 -0500 Subject: [PATCH 2/2] host: handle a second client connecting later We don't have a way to unregister from events, so, check if _isConnected --- src/host.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/host.js b/src/host.js index 1714a1c..3211ba7 100644 --- a/src/host.js +++ b/src/host.js @@ -56,6 +56,10 @@ Host.prototype.connect = function connect() { var me = this; return new Promise(function(resolve/*, reject*/) { me.onEvent('ready', function() { + if (me._isConnected) { + return; + } + resolve(Port.prototype.connect.call(me)); }); me.open();