code: function evalPromise(promise) {
      // wrap in `countdown`
      exports.countdown(promise, timeout)
        .then(function(resolvedValue) {
          deferred.resolve(resolvedValue);
        }).fail(function(err) {
          deferred.reject(err);
        });
    }
docs: waits for a promise, resolves deferred when resolved
  @param promise