Página intensiva de Ajax: reutilize o mesmo objeto XMLHttpRequest ou crie um novo a cada vez?

Eu estou trabalhando em algum tipo de interface multiusuário on-line de editor / coop, que estará fazendo um monte (como em milhares) de pedidos de ajax durante a vida útil de uma página.

O que seria melhor: ('melhor' em termos de estabilidade, compatibilidade, evitando problemas)

Crie um objeto XMLHttpRequest e reutilize isso para cada solicitação HTTP

Crie um novo objeto XMLHttpRequest para cada solicitação HTTP

Gerencie um 'pool' dinâmico de objetos XMLHttpRequest, criando um novo ao iniciar uma solicitação HTTP e nenhum objeto existente está disponível e marcando um objeto criado anteriormente como 'disponível' quando sua última solicitação foi concluída com êxito

Eu acho que 1 não é uma opção, porque algumas solicitações podem falhar, eu posso estar iniciando novas solicitações enquanto uma anterior ainda não foi concluída, etc.

Quanto a 2, eu acho que isso é um vazamento de memória, ou pode resultar em uso insano de memória / recurso. Ou, de alguma forma, posso fechar ou excluir um objeto quando sua solicitação é finalizada? (onde / como?) Ou o coletor de lixo JS cuida adequadamente disso?

Nunca tentei 3 antes, mas parece o melhor dos dois mundos. Ou é uma abordagem como essa desnecessária, ou ainda estou com problemas em potencial? Exatamente quando posso supor que uma solicitação seja finalizada (assim, o objeto disponível para uma nova solicitação) é que, ao receber o readyState 4 e o status HTTP 200? (por exemplo, posso ter certeza de que não haverá mais atualizações ou retornos de chamada depois disso?)

questionAnswers(1)

yourAnswerToTheQuestion