src/index.js
function lowChain(_, array, save) {
  var chain = _.chain(array);

  _.functionsIn(chain).forEach(function (method) {
    chain[method] = _.flow(chain[method], function (arg) {
      var v = void 0;
      if (arg) {
        v = _.isFunction(arg.value) ? arg.value() : arg;
      }

      var s = save();

      if (s) return s.then(function () {
        return Promise.resolve(v);
      });
      return v;
    });
  });

  return chain;
}
function lowChain(_, array, save) {
  var chain = _.chain(array);

  _.functionsIn(chain).forEach(function (method) {
    chain[method] = _.flow(chain[method], function (arg) {
      var v = void 0;
      if (arg) {
        v = _.isFunction(arg.value) ? arg.value() : arg;
      }

      var s = save();

      if (s) return s.then(function () {
        return Promise.resolve(v);
      });
      return v;
    });
  });

  return chain;
}
Returns a lodash chain that calls .value() automatically after the first .method()  It also returns a promise or value  For example: lowChain(_, array, save).method()  is the same as: _.chain(array).method().value()