event handling not working as expected nodejs

writing this little domain search app, it should sequentially search the .com of each item in an array, but it keeps searching for test1. even if I do a console log within the search function it tells me the value of x is test2, and test 3. do I need to remove the listener or something?

I get the following output

 domain test1.com

 Domain Name: TEST1.COM
 domain test2.com

 Domain Name: TEST1.COM
 domain test3.com

 Domain Name: TEST1.COM

app.js

 var port = 43;
 var net = require('net');
 var host = 'whois.internic.net';
 var dotCom = new net.Socket();
 var c = 0;
 var connections = 0;
 var dotComStatus;
 dotCom.setEncoding('ascii');

 var searches = ['test1', 'test2', 'test3'];
 search(searches.shift()); 

 function chkconnections(z) {
      if (connections <= 0) {
           if (searches.length >= 1) {
                process.nextTick(function() {
                     search(searches.shift());
                });
           }
      }
 }

function search(x) {
   var q = "domain " + x + ".com\r\n";

   dotCom.connect(port, host, function() {
        dotCom.write(q);
        console.log(q);
        connections++;
   });

   dotCom.on('data', function(data) {
        c++;
        if (c == 2) { 
             dotComStatus = data.split('\n')[1];
             dotCom.on('close', function() {
                  console.log(dotComStatus);
                  connections--;
                  chkconnections();
             });
        }
   });
}   

There are several obvious problems with this code. Firstly putting the close event inside the data event is a bad idea. If the connection closed before data was received that section of code would never be reached. Next is there is a big problem with the section with

c++;
if (c == 2)

Since you never reset c to 0 the next line dotComStatus = data.split('\n')[1]; is never executed. But then the socket closes and the event closed is triggered. And this is executed again.

  console.log(dotComStatus);
  connections--;
  chkconnections();

But the value of dotComStatus has not changed since c was equal to 0. There are many examples of how to do this connect/data/end flow that is common in NodeJS.

 var port = 43;
  var net = require('net');
  var host = 'whois.internic.net';

  var searches = ['test1', 'test2', 'test3'];
  search(searches.shift());

  function chkconnections(z) {
    if(searches.length > 0)
      search(searches.shift());
  }

  function search(x) {
    var dotCom = new net.Socket();
    dotCom.setEncoding('ascii');
    var q = "domain " + x + ".com\r\n";

    dotCom.connect(port, host, function() {
      dotCom.write(q);
    });

    var data = ""; // holding place until socket closes

    dotCom.on('data', function(chunk) {
      data += chunk; // add chunk to data
    });

    dotCom.on("end", function() {
      // socket closed
      dotComStatus = data.split('\n')[7]; // Should be 'Domain Name: blah'
      console.log(dotComStatus);
      chkconnections(); // move on to next
    });
};