Erro de extensão do Chrome: "Desmarcado runtime.lastError ao executar o browserAction.setIcon: sem guia com o ID"

Estou codificando minha extensão do Google Chrome onde defino o ícone do aplicativo noscript em segundo plano assim sendo:

try
{
    objIcon = {
        "19": "images/icon19.png",
        "38": "images/icon38.png"
    };

    chrome.browserAction.setIcon({
        path: objIcon,
        tabId: nTabID

    });
}
catch(e)
{
}

Observe que eu encerrei a chamada no bloco try / catch.

Ainda assim, às vezes estou recebendo a seguinte mensagem no log do console:

Não verificado runtime.lastError ao executar o browserAction.setIcon: Nenhuma guia com o ID: 11618.

É difícil depurar esse erro porque parece surgir apenas quando eu fecho ou recarrego a guia Chrome, ele não tem um número de linha ou nenhuma informação para eu rastrear, além de não ser fácil executar um depurador (ou seja, eu não pode definir um ponto de interrupção no momento em que o erro ocorre, mas se eu definir cegamente um ponto de interrupção nochrome.browserAction.setIcon() linha, não vejo mais a mensagem no log.)

Então, estou curioso para saber se alguém poderia sugerir como corrigir esse erro.

EDITAR: Apenas para postar uma atualização. Ainda não consigo resolver esse problema. A sugestão proposta por @abraham abaixo oferece umaum pouco trabalhando abordagem, mas énão à prova de falhas. Por exemplo, em uma situação em que a guia está fechando, posso chamar de sugestãochrome.browserAction.setIcon() pode ter êxito se a guia ainda não estiver fechada, mas enquanto estiver dentro da função de retorno de chamada, a guia poderá fechar e, portanto, quaisquer chamadas consecutivas para alguma outra API que exija o mesmo ID da guia, por exemplosetBadgeBackgroundColor() ainda pode me dar o mesmoNo tab with id exceção. Em outras palavras, para quem sabeprogramação nativa, este é um clássicocondição de corrida situação. E não tenho certeza se é um bug no Chrome, porque obviamente o JS não oferece nenhum método de sincronização de threads ...

Testemunhei esse comportamento várias vezes enquanto fazia meus testes. Isso não acontece frequentemente porque estamos falando de uma situação de tempo muito precisa, mas acontece. Portanto, se alguém encontrar uma solução, publique-a abaixo.