title: lodash mapValues async
body: <p>Inside _.mapValues I want get some modified values with some latency (for example from DB), but I was faced with problem: while I modify values in sync mode everything is good, when i try use promises or callback its work incorrectly (in first case I get Promise object, in second: undefined value).
  Here some simplified example, how i can rewrite code inside mapValues to solve this problem?</p>
  
  <pre><code>'use strict';
  const _ = require('lodash');
  const Promise = require('bluebird');
  
  let obj = {
    one: 1,
    two: 2,
  };
  
  let increment = (value) =&gt; {
    return value + 1;
  };
  
  let incrementProm = (value) =&gt; {
    return Promise.resolve(value + 1);
  };
  
  let incrementCb = (value, cb) =&gt; {
    let res = value + 1;
    let err = null;
    setTimeout(cb.bind(undefined, err, res), 100);
  };
  
  let t1 = _.mapValues(obj, (value) =&gt; {
    return increment(value);
  });
  
  let t2 = _.mapValues(obj, (value) =&gt; {
    return incrementProm(value);
  });
  
  let t3 = _.mapValues(obj, (value) =&gt; {
    let temp;
    incrementCb(value, (err, res) =&gt; {
      temp = res;
    });
    return temp;
  });
  
  console.log('Sync res:');
  console.log(t1);
  console.log('Promise res:');
  console.log(t2);
  console.log('Callback res:');
  console.log(t3);
  </code></pre>