code: function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {
    if (_.isArray(objValue)) { // don't merge arrays
      return srcValue;
    } else if (_.isObject(objValue) && objValue._mergeStrategy == 'replace') {
      if (_.isObject(srcValue)) {
        Object.defineProperty(srcValue, '_mergeStrategy', {
          value: 'replace', configurable: true
        });
      }
      return srcValue;
    }
    else if (_.isObject(srcValue) && srcValue._mergeStrategy == 'replace') {
      return srcValue;
    }
    return undefined;
  }
docs: https://stackoverflow.com/questions/19965844/lodash-difference-between-extend-assign-and-merge