text: const Cc = Components.classes;
  const Ci = Components.interfaces;
  const CC = Components.Constructor;
  
  const ServerSocket = CC("@mozilla.org/network/server-socket;1",
                          "nsIServerSocket",
                          "init");
  
  var serv;
  
  function TestServer() {
      this.listener = ServerSocket(4444, true, -1);
      this.listener.asyncListen(this);
  }
  
  TestServer.prototype = {
      QueryInterface: function(iid) {
          if (iid.equals(Ci.nsIServerSocket) ||
              iid.equals(Ci.nsISupports))
              return this;
          throw Components.results.NS_ERROR_NO_INTERFACE;
      },
      onSocketAccepted: function(socket, trans) {
          try { this.listener.close(); } catch(e) {}
          do_check_true(true);
          do_test_finished();
      },
  
      onStopListening: function(socket) {}
  }
  
  function run_test() {
      var ios = Cc["@mozilla.org/network/io-service;1"]
          .getService(Ci.nsIIOService);    
  
      serv = new TestServer();
      URI = ios.newURI("http://localhost:4444/just/a/test", null, null);
      ios.QueryInterface(Components.interfaces.nsISpeculativeConnect)
          .speculativeConnect(URI, null, null);
      do_test_pending();
  }
  
  