While it will accomplish your goals, it will do it in a sequential manner. It will run the "test" function before each run to ensure that it should run again.
Their example is as follows:
var count = 0;
async.whilst(
    function () { return count < 5; },
    function (callback) {
        count++;
        setTimeout(callback, 1000);
    },
    function (err) {
        // 5 seconds have passed
    }
);