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
if (!headers['User-Agent'] && !headers['user-agent']) {
      headers['User-Agent'] = 'axios/' + pkg.version;
    }
    if (data && !utils.isStream(data)) {
      if (Buffer.isBuffer(data)) {
        
      } else if (utils.isArrayBuffer(data)) {
        data = new Buffer(new Uint8Array(data));
      } else if (utils.isString(data)) {
        data = new Buffer(data, 'utf-8');
      } else {
        return reject(createError(
          'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',
          config
        ));
      }
      
      headers['Content-Length'] = data.length;
    }
    
    var auth = undefined;
    if (config.auth) {
      var username = config.auth.username || '';
      var password = config.auth.password || '';
      auth = username + ':' + password;
    }
    
    var parsed = url.parse(config.url);