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++;
}