Why does Ramda work in this example where native Array.map or Lodash do not?
<p>In the process of writing an example for <a href="https://stackoverflow.com/questions/38932502/how-to-add-additional-data-with-data-read-from-a-node-stream-in-read-callback-ha">this SO question</a>, this question came up:</p>

<p>Why does the native <code>Array.map</code> throw an error when used like this:</p>

<pre><code>[tmp1, tmp2].map(fs.createReadStream)
  .forEach(stream =&gt; stream.pipe(jsonStream));


fs.js:1664
    throw new TypeError('"options" argument must be a string or an object');
    ^

TypeError: "options" argument must be a string or an object
    at new ReadStream (fs.js:1664:11)
    at fs.createReadStream (fs.js:1649:10)
    at Array.map (native)
</code></pre>

<p>Similarly with lodash… but it works fine with ramda.</p>

<pre><code>// Same error:
_.map([tmp1, tmp2], fs.createReadStream)
  .forEach(stream =&gt; stream.pipe(jsonStream));

// Works fine:
R.map(fs.createReadStream, [tmp1, tmp2])
  .forEach(stream =&gt; stream.pipe(jsonStream));
</code></pre>

<p>Note, this is the full code from referenced question:</p>

<pre class="lang-js prettyprint-override"><code>var fs = require('fs');
var path = require('path');
var JSONStream = require('JSONStream');

var tmp1 = path.join(__dirname, 'data', 'tmp1.json');
var tmp2 = path.join(__dirname, 'data', 'tmp2.json');

var jsonStream = JSONStream.parse();
jsonStream.on('data', function (data) {
  console.log('---\nFrom which file does this data come from?');
  console.log(data);
});

[tmp1, tmp2].map(p =&gt; {
  return fs.createReadStream(p);
}).forEach(stream =&gt; {
  stream.pipe(jsonStream);
});
</code></pre>

<p>The second argument of <code>fs.createReadStream</code> should be <code>undefined</code> no?</p>