Hacks para fazer chamadas JavaScript síncronas [duplicado]

Esta pergunta já tem uma resposta aqui:

Obtendo comportamento síncrono em javascript? 4 respostas

O JavaScript usa chamadas assíncronas na maioria das APIs modernas que lidam com coisas "lentas", como E / S de disco e rede. Sei qual é o objetivo disso, no entanto, existem certos casos em que é realmente necessário fazer chamadas síncronas.

Por exemplo, eu tenho um código JavaScript que não posso reescrever. No código, há chamada síncrona para um determinado método. Para alguns propósitos de depuração no ambiente do desenvolvedor, desejo interceptar essa chamada, enviar informações ao servidor e aguardar até que o servidor responda. Esse interceptador não funcionará na produção. AFAIK, havia uma maneira de fazer isso com o NPAPI, mas agora ele está oficialmente obsoleto. E o Google Chrome e o Mozilla Firefox fornecem apenas API de soquete assíncrona, então não tenho chance de realizar essa interceptação. Outra maneira é enviar XMLHttpRequest sincrônico, mas é consideravelmente lento, requer uma conexão HTTP e carga HTTP, portanto, eu prefiro o WebSocket.

Eu tenho outro caso de esquina onde devo chamar IndexedDB, mas é muito difícil de explicar. Infelizmente, a API de sincronização do IndexedDB não é implementada em nenhum lugar.

Existem outros hacks para chamar métodos assíncronos de forma síncrona? Eu aceitaria hacks específicos do navegador, complementos do navegador, plugins e assim por diante. Ou alguém sabe como pedir a todos os comitês (e desenvolvedores de navegadores) que desenvolvem padrões da Web para incluir pelo menos versões do WebWorker da API sincrônica?

Eu sei que muitas perguntas sobre como chamar o método assíncrono de forma síncrona foram feitas muitas vezes, e a resposta comum é "essa é uma má idéia". Eu percebo quegeralmente é uma má ideia, mas em umcerto casos, realmente precisamos de liberdade para ligar de forma síncrona.