From 2dcd6896559ef3983bd3203a49f07f30a0fb30c0 Mon Sep 17 00:00:00 2001 From: Jacob Heun Date: Wed, 21 Aug 2019 18:06:39 +0200 Subject: [PATCH] fix: reject rather than throw in get peer info The get peer info util consolidation from #400 exposed an issue with how bad values are being handled. Throwing the error can cause issues when promises are being used. Rejecting resolves this. I added a test case to validate the change. --- src/get-peer-info.js | 4 ++-- test/get-peer-info.spec.js | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/get-peer-info.js b/src/get-peer-info.js index ddeda93ac4..b75757f5e6 100644 --- a/src/get-peer-info.js +++ b/src/get-peer-info.js @@ -56,10 +56,10 @@ function getPeerInfoRemote (peer, libp2p) { try { peerInfo = getPeerInfo(peer, libp2p.peerBook) } catch (err) { - throw errCode( + return Promise.reject(errCode( new Error(`${peer} is not a valid peer type`), 'ERR_INVALID_PEER_TYPE' - ) + )) } // If we don't have an address for the peer, attempt to find it diff --git a/test/get-peer-info.spec.js b/test/get-peer-info.spec.js index 15ff9f5422..e550cb4661 100644 --- a/test/get-peer-info.spec.js +++ b/test/get-peer-info.spec.js @@ -123,5 +123,12 @@ describe('Get Peer Info', () => { expect(error.code).to.eql('ERR_INVALID_PEER_TYPE') }) + + it('should callback with error for invalid non-peer multiaddr (promise)', () => { + return getPeerInfoRemote(undefined) + .then(expect.fail, (err) => { + expect(err.code).to.eql('ERR_INVALID_PEER_TYPE') + }) + }) }) })