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
validateStatus: function () {
          return true;
        }
      }).then(function (res) {
        test.equal(res.status, 302);
        test.equal(res.headers['location'], '/foo');
        test.done();
      });
    });
  },
  testMaxRedirects: function (test) {
    var i = 1;
    server = http.createServer(function (req, res) {
      res.setHeader('Location', '/' + i);
      res.statusCode = 302;
      res.end();
      i++;
    }).listen(4444, function () {
      axios.get('http://localhost:4444/', {
        maxRedirects: 3
      }).catch(function (error) {
        test.done();
      });
    });
  },
  testTransparentGunzip: function (test) {
    var data = {
      firstName: 'Fred',
      lastName: 'Flintstone',
      emailAddr: 'fred@example.com'