code: function lookup(uri, opts) {
      if (typeof uri === "object") {
        opts = uri;
        uri = undefined;
      }
  
      opts = opts || {};
  
      var parsed = url_1(uri);
      var source = parsed.source;
      var id = parsed.id;
      var path = parsed.path;
      var sameNamespace = cache[id] && path in cache[id].nsps;
      var newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
  
      var io;
  
      if (newConnection) {
        debug("ignoring socket cache for %s", source);
        io = manager(source, opts);
      } else {
        if (!cache[id]) {
          debug("new io instance for %s", source);
          cache[id] = manager(source, opts);
        }
        io = cache[id];
      }
      if (parsed.query && !opts.query) {
        opts.query = parsed.query;
      }
      return io.socket(parsed.path, opts);
    }
docs: Looks up an existing `Manager` for multiplexing.
  If the user summons:
  
  `io('http://localhost/a');`
  `io('http://localhost/b');`
  
  We reuse the existing instance based on same scheme/port/host,
  and we initialize sockets for each namespace.
  
  @api public