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
});
    }).listen('./test.sock', function() {
      axios({
        socketPath: './test.sock',
        url: '/'
      })
      .then(function(resp) {
        test.equal(resp.status, 200);
        test.equal(resp.statusText, 'OK');
        test.done();
      });
    });
  },
  testStream: function(test) {
    server = http.createServer(function (req, res) {
      req.pipe(res);
    }).listen(4444, function () {
      axios.post('http://localhost:4444/',
        fs.createReadStream(__filename), {
        responseType: 'stream'
      }).then(function (res) {
        var stream = res.data;
        var string = '';
        stream.on('data', function (chunk) {
          string += chunk.toString('utf8');
        });
        stream.on('end', function () {
          test.equal(string, fs.readFileSync(__filename, 'utf8'));
          test.done();
        });