Como evitar o acesso variável mutável do fechamento

Eu tenho um código como este:

for(var id=0; id < message.receiver.length; id++){
   var tmp_id = id;
   zlib.gzip(JSON.stringify(message.json), function(err, buffer){
                        ...
   pushStatusPool[message.receiver[tmp_id]] = null; // fix memory leak
   delete pushStatusPool[message.receiver[tmp_id]];
   ...
   });
}

E eu recebi um aviso de que usartmp_id no encerramento pode causar problema porque é uma variável mutável.

Como eu poderia evitar isso? Quero dizer, como eu poderia enviar uma variável imutável para retorno de chamada desde que este é um loop for e eu não posso mudar o código dezlib.gzip? Ou em outras palavras, como eu poderia passar um argumento para um fechamento?

questionAnswers(6)

yourAnswerToTheQuestion