Greetings!  When trying to set data in the request to a readable stream, it looks like stream errors aren't being captured and sent back through `reject`. Instead, it just throws.

Pretty simple repo here:

```js
const axios = require('axios');
const fs = require('fs');

axios.post('/to/here', {
    data: fs.createReadStream('/it/dont/exist')
  })
  .then(console.log)
  .catch(console.error)
```

Pretty sure the issue is here:
https://github.com/axios/axios/blob/master/lib/adapters/http.js#L236

The data gets piped without attaching an `.on('error')` handler to reject the promise. 
test/unit/adapters/http.js
});
    });
  },
  testMaxContentLength: function(test) {
    var str = Array(100000).join('ж');
    server = http.createServer(function (req, res) {
      res.setHeader('Content-Type', 'text/html; charset=UTF-8');
      res.end(str);
    }).listen(4444, function () {
      var success = false, failure = false, error;
      axios.get('http://localhost:4444/', {
        maxContentLength: 2000
      }).then(function (res) {
        success = true;
      }).catch(function (err) {
        error = err;
        failure = true;
      });
      setTimeout(function () {
        test.equal(success, false, 'request should not succeed');
        test.equal(failure, true, 'request should fail');
        test.equal(error.message, 'maxContentLength size of 2000 exceeded');
        test.done();
      }, 100);
    });
  },
  testSocket: function (test) {
    server = net.createServer(function (socket) {
      socket.on('data', function() {
        socket.end('HTTP/1.1 200 OK\r\n\r\n');