node.js no envía el socket en el evento de desconexión

Cuando alguien se conecta al servidor de nodo, mantengo una matriz con todos los sockets. De esa manera, puedo transmitir mensajes a todos cuando sea necesario o recorrer a los usuarios para contar la cantidad de usuarios en línea, etc.

Todo esto funciona bien, pero cuando se activa un evento de desconexión, no recibo un socket en mis argumentos. ¿Hay alguna otra forma de saber qué socket se acaba de desconectar?

var allClients = [];

io.sockets.on('connection', function(socket) {
   allClients.push(socket);

   socket.on('disconnect', function(socket) {
      console.log('Got disconnect!');

      var i = allClients.indexOf(socket);
      delete allClients[i];
   });
});

Por supuesto, el ejemplo anterior no funciona, porque el evento de desconexión no da un argumento de socket (o cualquier otro argumento). Entonces, ¿hay otro evento que se disparó antes de una desconexión donde el zócalo todavía está allí?

Ali