I have the following two snippets:
1.this is the unit I would like to run:
health.checkHealth = function (req, res) {
async.parallel({
    cassandra: function (callback) {
        cassandraRepository.ping(callback);
    },
    kafka: function (callback) {
        kafkaHelper.ping(callback);
    },
    vault: function (callback) {
        vaultClient.health()
            .then((isOk)=>{
                 callback(null, isOk)})
            .catch(()=>
                callback(null, false));
    }
}, function (err, result) {
    var response = {};
    if (result.cassandra) {
        response.cassandra = "OK";
    } else {
        response.cassandra = "Failed";
        res.status(500);
    }
    if (result.kafka) {
        response.kafka = "OK";
    } else {
        response.kafka = "Failed";
        res.status(500);
    }
    if (result.vault) {
        response.vault = "OK";
    } else {
        response.vault = "Failed";
        res.status(500);
    }
    res.send(response);
})
}
2.this is the test to check the unit:
     describe('vault is avaliable', function () {
        beforeEach(sinon.test(function () {
            sinon.stub(vaultClient, "health").resolves(true);
        }));
        it('should return 200', sinon.test(function (done) {
            var response = {
                vault: "OK"
            };
            var req = {};
            var res = {};
            var spySend = res.send = sinon.spy();
            var spyStatus = res.status = sinon.spy();
            health.checkHealth(req, res);
            expect(spySend.calledOnce).to.equal(true);
            expect(spySend.calledWith(response));
            expect(spyStatus.calledOnce).to.equal(false);
        }));
    });
My problem is that when I call checkHealth it proceeds to the next line (expect(spySend.calledOnce).to.equal(true);) without waiting for the vaultClient's promise to complete. What do I need to do to make the expects run only after the 'checkHealth' was run.
 
     
    