index.js
function mergeConf(env, conf, key, ENV, fn) {
  fetch(conf, key, function(err, layout) {
    if (err) return fn(err);

    fetch(layout, 'default', function(err, defaults) {
      if (err) return fn(err);

      debug('  default', defaults);
      merge(ENV, defaults);
      debug('    ', ENV);

      fetch(layout, env, function(err, envs) {
        if (err) return fn(err);

        debug('  ' + env, envs);
        merge(ENV, envs);
        debug('    ', ENV);

        fn();
      });
    });
  });
}
function mergeConf(env, conf, key, ENV, fn) {
  fetch(conf, key, function(err, layout) {
    if (err) return fn(err);

    fetch(layout, 'default', function(err, defaults) {
      if (err) return fn(err);

      debug('  default', defaults);
      merge(ENV, defaults);
      debug('    ', ENV);

      fetch(layout, env, function(err, envs) {
        if (err) return fn(err);

        debug('  ' + env, envs);
        merge(ENV, envs);
        debug('    ', ENV);

        fn();
      });
    });
  });
}
function mergeConf ( env , conf , key , ENV , fn ) { fetch ( conf , key , function ( err , layout ) { if ( err ) return fn ( err ) ; fetch ( layout , 'default' , function ( err , defaults ) { if ( err ) return fn ( err ) ; debug ( '  default' , defaults ) ; merge ( ENV , defaults ) ; debug ( '    ' , ENV ) ; fetch ( layout , env , function ( err , envs ) { if ( err ) return fn ( err ) ; debug ( '  ' + env , envs ) ; merge ( ENV , envs ) ; debug ( '    ' , ENV ) ; fn ( ) ; } ) ; } ) ; } ) ; }
Merge conf into ENV

@param {String} env
@param {Object} conf
@param {String} key
@param {Object} ENV
@param {Function} fn
Merge conf into ENV