Why?

The callback signature later is:

 this.first(connection.remote_ip, this.zones, function (err, zone, a)