'use strict'; var request = require("request"); function getRelevantData(personId, cb) { get('/api/persons/'+personId, recv => { let result = {name: recv.name} let waitingResponses = 2; function recvCb(data, type){ if (type === "insurance") { result.isInsured = data.isInsured; waitingResponses--; } else if (type === "debt") { result.taxDebt = data.debt; waitingResponses--; } if (!waitingResponses) { cb(result); } } get('/api/health-insurance/'+recv.code, recv => recvCb(recv, "insurance")); get('/api/tax-debt/'+recv.code, recv => recvCb(recv, "debt")); }); } getRelevantData(2948,console.log) // helper function function get(url, cb) { request('http://localhost:3000' + url, function(error, response, body) { cb(JSON.parse(body)); }); }