¿Qué hace "! -" en JavaScript?

Tengo este fragmento de código (tomado deesta pregunta):

var walk = function(dir, done) {
    var results = [];

    fs.readdir(dir, function(err, list) {
        if (err)
            return done(err);

        var pending = list.length;

        if (!pending) 
            return done(null, results);

        list.forEach(function(file) {
            file = path.resolve(dir, file);
            fs.stat(file, function(err, stat) {
                if (stat && stat.isDirectory()) {
                    walk(file, function(err, res) {
                        results = results.concat(res);

                        if (!--pending)
                            done(null, results);
                    });
                } else {
                    results.push(file);

                    if (!--pending) 
                        done(null, results);
                }
            });
        });
    });
};

Estoy tratando de seguirlo, y creo que entiendo todo, excepto cerca del final donde dice!--pending. En este contexto, ¿qué hace ese comando?

Editar: agradezco todos los comentarios adicionales, pero la pregunta ha sido respondida muchas veces. ¡Gracias de cualquier manera!

Respuestas a la pregunta(10)

Su respuesta a la pregunta