#### 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
timeout: 100,
          transitional: {
            clarifyTimeoutError: true
          }
        }).then(function () {
          fail(new Error('timeout error not caught'));
        }, function (err) {
          expect(err instanceof Error).toBe(true);
          expect(err.code).toEqual('ETIMEDOUT');
          done();
        });
        jasmine.Ajax.requests.mostRecent().responseTimeout();
      });
    });
  });
  it('should reject on network errors', function (done) {
    
    jasmine.Ajax.uninstall();
    var resolveSpy = jasmine.createSpy('resolve');
    var rejectSpy = jasmine.createSpy('reject');
    var finish = function () {
      expect(resolveSpy).not.toHaveBeenCalled();
      expect(rejectSpy).toHaveBeenCalled();
      var reason = rejectSpy.calls.first().args[0];
      expect(reason instanceof Error).toBe(true);
      expect(reason.config.method).toBe('get');
      expect(reason.config.url).toBe('http://thisisnotaserver/foo');
      expect(reason.request).toEqual(jasmine.any(XMLHttpRequest));
      
      jasmine.Ajax.install();