Balde funcional com vazamento

Para combinar várias chamadas para uma função em uma chamada (depois que todas as outras forem concluídas), use setTimeout para sair da pilha de chamadas atual!

function collector() {
collector
._count = collector._count || 0;
if (!collector._count) {
setTimeout
(function() {
target
();
collector
._count=0;
}, 0);
}
collector
._count++;
}