docs: function untilFn(test, fn) {
      return this.then(function(last) {
          if (!test(last)) {
              return Q(fn(last)).then(function(value) {
                  return Q(value).until(test, fn);
              });
          }
          return last;
      });
  }