#### Describe the bug
The irrelevant error returned when requesting illegal URL, like: "tel:484-695-3408"
```
TypeError: Cannot read property 'replace' of null
    at dispatchHttpRequest (node_modules/axios/lib/adapters/http.js:109:74)
    at new Promise (<anonymous>)
    at httpAdapter (node_modules/axios/lib/adapters/http.js:46:10)
    at dispatchRequest (node_modules/axios/lib/core/dispatchRequest.js:52:10)
```

#### To Reproduce
```js
axios.get('tel:484-695-3408').catch(err => console.error(err));
```

#### Expected behavior
Return descriptive error, like "Unsupported protocol tel:"

#### Environment
 - Axios Version: 0.21.1
 - Adapter: HTTP
 - Browser: none
 - Browser Version: none
 - Node.js Version: 12.19.0
 - OS: MacOS 10.14
 - Additional Library Versions: none

#### Additional context/Screenshots
none
test/unit/adapters/http.js
axios.get('http://localhost:4444/', {
          proxy: {
            host: 'localhost',
            port: 4000
          }
        }).then(function (res) {
          assert.equal(res.data, '123456789', 'should pass through proxy');
          done();
        });
      });
    });
  });
  it('should support HTTPS proxies', function (done) {
    var options = {
      key: fs.readFileSync(path.join(__dirname, 'key.pem')),
      cert: fs.readFileSync(path.join(__dirname, 'cert.pem'))
    };
    server = https.createServer(options, function (req, res) {
      res.setHeader('Content-Type', 'text/html; charset=UTF-8');
      res.end('12345');
    }).listen(4444, function () {
      proxy = https.createServer(options, function (request, response) {
        var parsed = url.parse(request.url);
        var opts = {
          host: parsed.hostname,
          port: parsed.port,
          path: parsed.path,
          protocol: parsed.protocol,
          rejectUnauthorized: false
        };