Я советую вам посмотреть в сторону обещаний.
Начните с канонической библиотека
promise
Когда разберетесь с ней, вам возможно потребуется комбайн посложнее, смотрите в сторону
Q// npm install promise
var fs = require('fs');
var Promise = require('promise');
// В качестве источника данных в данном случае файловая система,
// в вашем случае это видимо будет net.Connection
function dataStoredLoad( dataName ) {
return new Promise(function(resolve, reject) {
fs.readFile(dataName, 'utf8', function(err, data) {
if (err) return reject(err);
resolve(data);
});
})
}
// Это другой способ записать то, что написано в dataStoredLoad
function dataSourceLoad( dataName ) {
return Promise.denodeify(fs.readFile)(dataName, 'utf8');
}
Promise.all(dataStoredLoad, dataSourceLoad).then(function(res) {
var stored = res[0],
sourse = res[1];
stored.forEach( function (dataStored, index) {
sourse.forEach( function (dataStored, index) {
if ( dataStored.id == dataSource ) {
// key.value comparsion procedure and .pop() / .push()
}
}
}
});