code: function fapply(func, object, args) {
    try {
      return Q.resolve(func.apply(object, args));
    } catch(err) {
      return Q.reject(err);
    }
  }
docs: Apply a synchronous function but wrap the result or exception in a promise.
  Why doesn't Q.apply work this way??