#### 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/specs/requests.spec.js
getAjaxRequest().then(function (request) {
      var output = new Int8Array(request.params);
      expect(output.length).toEqual(2);
      expect(output[0]).toEqual(1);
      expect(output[1]).toEqual(2);
      done();
    });
  });
  it('should support binary data as array buffer view', function (done) {
    var input = new Int8Array(2);
    input[0] = 1;
    input[1] = 2;
    axios.post('/foo', input);
    getAjaxRequest().then(function (request) {
      var output = new Int8Array(request.params);
      expect(output.length).toEqual(2);
      expect(output[0]).toEqual(1);
      expect(output[1]).toEqual(2);
      done();
    });
  });
  it('should support array buffer response', function (done) {
    var response;
    function str2ab(str) {
      var buff = new ArrayBuffer(str.length * 2);
      var view = new Uint16Array(buff);
      for ( var i=0, l=str.length; i<l; i++) {
        view[i] = str.charCodeAt(i);
      }
      return buff;