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. 
lib/adapters/http.js
headers: res.headers,
        config: config,
        request: lastRequest
      };
      if (config.responseType === 'stream') {
        response.data = stream;
        settle(resolve, reject, response);
      } else {
        var responseBuffer = [];
        stream.on('data', function handleStreamData(chunk) {
          responseBuffer.push(chunk);
          
          if (config.maxContentLength > -1 && Buffer.concat(responseBuffer).length > config.maxContentLength) {
            reject(createError('maxContentLength size of ' + config.maxContentLength + ' exceeded',
              config, null, lastRequest));
          }
        });
        stream.on('error', function handleStreamError(err) {
          if (req.aborted) return;
          reject(enhanceError(err, config, null, lastRequest));
        });
        stream.on('end', function handleStreamEnd() {
          var responseData = Buffer.concat(responseBuffer);
          if (config.responseType !== 'arraybuffer') {
            responseData = responseData.toString(config.responseEncoding);
          }
          response.data = responseData;
          settle(resolve, reject, response);
        });
      }