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
}
          },
          headers: {
            'Proxy-Authorization': 'Basic abc123'
          }
        }).then(function(res) {
          var base64 = new Buffer('user:pass', 'utf8').toString('base64');
          test.equal(res.data, 'Basic ' + base64, 'should authenticate to the proxy');
          test.done();
        });
      });
    });
  },
  testCancel: function(test) {
    var source = axios.CancelToken.source();
    server = http.createServer(function (req, res) {
      // 
      source.cancel('Operation has been canceled.');
    }).listen(4444, function() {
      axios.get('http://localhost:4444/', {
        cancelToken: source.token
      }).catch(function (thrown) {
        test.ok(thrown instanceof axios.Cancel, 'Promise must be rejected with a Cancel obejct');
        test.equal(thrown.message, 'Operation has been canceled.');
        test.done();
      });
    });
  }
};