#### Is your feature request related to a problem? Please describe.
This is an optimazition of code.

#### Describe the solution you'd like
The following line of code comes from https://github.com/axios/axios/blob/master/lib/adapters/http.js#L403:
```js
reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);
```
It can be optimized as follows:
```js
reject(!cancel || cancel.type ? new CanceledError() : cancel);
```

#### Describe alternatives you've considered
When the code is executed to `(cancel && cancel.type)`, it means `!cancel` is false, so `cancel` is true, we can get `cancel.type` directly.

#### Additional context
no more

lib/adapters/http.js
transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,
          config,
          req
        ));
      });
    }
    if (config.cancelToken || config.signal) {
      
      
      onCanceled = function(cancel) {
        if (req.aborted) return;
        req.abort();
        reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);
      };
      config.cancelToken && config.cancelToken.subscribe(onCanceled);
      if (config.signal) {
        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);
      }
    }
    
    if (utils.isStream(data)) {
      data.on('error', function handleStreamError(err) {
        reject(AxiosError.from(err, config, null, req));
      }).pipe(req);
    } else {
      req.end(data);
    }
  });
};