code: function (chainP, fn) {
                  var that = this;
                  var p = new rsvp.Promise();
                  chainP.then(function () {
                      fn.apply(that, arguments).then(function () {
                          p.resolve.apply(p, arguments);
                      }, function (err) {
                          p.reject(err);
                      });
                  }, function (err) {
                      p.reject(err);
                  });
                  return p;
              }
docs: /* ----------------------------- ASYNC HELPERS -------------------------------