In `adapters/http.js`, it request use `https` or `http` module with `options`.

```javascript
var options = {
  hostname: parsed.hostname,
  port: parsed.port,
  path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''),
  method: config.method,
  headers: headers,
  agent: agent,
  auth: auth
};
``` 
We can add a key to support unix domain socket

```javascript
var options = {
  hostname: parsed.hostname,
  port: parsed.port,
  path: buildURL(parsed.path, config.params, config.paramsSerializer).replace(/^\?/, ''),
  socketPath: config.socketPath,  // just for test
  method: config.method,
  headers: headers,
  agent: agent,
  auth: auth
};
```

using axios like

```javascript
axios({
  socketPath: '/var/run/docker.sock',
  url: '/images/json'
})
.then(resp => console.log(resp.data))
```

I don't know if it fits your design concept, so I mentioned this issue

lib/adapters/http.js
});
    
    req.on('error', function handleRequestError(err) {
      if (req.aborted) return;
      reject(enhanceError(err, config, null, req));
    });
    
    if (config.timeout && !timer) {
      timer = setTimeout(function handleRequestTimeout() {
        req.abort();
        reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED', req));
      }, config.timeout);
    }
    if (config.cancelToken) {
      
      config.cancelToken.promise.then(function onCanceled(cancel) {
        if (req.aborted) return;
        req.abort();
        reject(cancel);
      });
    }
    
    if (utils.isStream(data)) {
      data.pipe(req);
    } else {
      req.end(data);
    }
  });
};