function when (condition, fn, interval) {
  if (condition()) return callback.async(fn);

  var ref = setInterval(function () {
    if (!condition()) return;
    callback(fn);
    clearInterval(ref);
  }, interval || 10);
}
Loop on a short interval until `condition()` is true, then call `fn`.

@param {Function} condition
@param {Function} fn
@param {Number} interval (optional)