diff --git a/package.json b/package.json index 86eb0d1a..cef5a37e 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "abort-controller": "^3.0.0", "async": "^2.6.2", "base32.js": "~0.1.0", + "callbackify": "^1.1.0", "chai-checkmark": "^1.0.1", "cids": "~0.7.0", "debug": "^4.1.1", diff --git a/src/private.js b/src/private.js index 05da806b..c8d53e5c 100644 --- a/src/private.js +++ b/src/private.js @@ -2,11 +2,11 @@ const PeerId = require('peer-id') const libp2pRecord = require('libp2p-record') -const waterfall = require('async/waterfall') const timeout = require('async/timeout') const PeerInfo = require('peer-info') const promisify = require('promisify-es6') const promiseToCallback = require('promise-to-callback') +const callbackify = require('callbackify') const errcode = require('err-code') @@ -543,29 +543,23 @@ module.exports = (dht) => ({ paths.push(pathProviders) // Here we return the query function to use on this particular disjoint path - return (peer, cb) => { - waterfall([ - (cb) => dht._findProvidersSingle(peer, key, cb), - (msg, cb) => { - const provs = msg.providerPeers - dht._log('(%s) found %s provider entries', dht.peerInfo.id.toB58String(), provs.length) - - provs.forEach((prov) => { - pathProviders.push(dht.peerBook.put(prov)) - }) - - // hooray we have all that we want - if (pathProviders.length >= pathSize) { - return cb(null, { pathComplete: true }) - } - - // it looks like we want some more - cb(null, { - closerPeers: msg.closerPeers - }) - } - ], cb) - } + return callbackify(async (peer) => { + const msg = await dht._findProvidersSingleAsync(peer, key) + const provs = msg.providerPeers + dht._log('(%s) found %s provider entries', dht.peerInfo.id.toB58String(), provs.length) + + provs.forEach((prov) => { + pathProviders.push(dht.peerBook.put(prov)) + }) + + // hooray we have all that we want + if (pathProviders.length >= pathSize) { + return { pathComplete: true } + } + + // it looks like we want some more + return { closerPeers: msg.closerPeers } + }) }) const peers = dht.routingTable.closestPeers(key.buffer, dht.kBucketSize)