Hacks para realizar llamadas de JavaScript sincrónicas [duplicar]

Esta pregunta ya tiene una respuesta aquí:

¿Obteniendo un comportamiento sincrónico en javascript? 4 respuestas

JavaScript utiliza llamadas asincrónicas en la mayoría de las API modernas que se ocupan de cosas "lentas" como el disco IO y la red. Me doy cuenta de cuál es el propósito de esto, sin embargo, hay ciertos casos en los que realmente se necesitan llamadas sincrónicas.

Por ejemplo, tengo un código JavaScript que no puedo reescribir. En el código hay llamadas sincrónicas a un determinado método. Para algunos propósitos de depuración en el entorno del desarrollador, quiero interceptar esta llamada, enviar información al servidor y esperar hasta que el servidor responda. Este interceptor no funcionará en la producción. AFAIK, había una manera de hacer esto con NPAPI, pero ahora está oficialmente en desuso. Y tanto Google Chrome como Mozilla Firefox proporcionan solo API de socket asíncrono, por lo que no tengo oportunidad de realizar dicha intercepción. Otra forma es enviar XMLHttpRequest sincrónico, pero es considerablemente lento, requiere conexión HTTP y carga HTTP, por lo que preferiría WebSocket.

Tengo otro caso de esquina donde tengo que llamar a IndexedDB, pero es muy difícil de explicar. Lamentablemente, la API de sincronización IndexedDB no está implementada en ninguna parte.

¿Hay otros trucos para llamar a los métodos asincrónicos sincrónicamente? Aceptaría hacks específicos del navegador, complementos del navegador, complementos, etc. ¿O puede que alguien sepa cómo solicitar a todos los comités (y también a los desarrolladores de navegadores) que desarrollen estándares web que incluyan al menos versiones WebWorker de API sincrónica?

Sé que muchas veces se hicieron preguntas sobre cómo llamar al método asincrónico sincrónicamente, y la respuesta común es "esta es una mala idea". me di cuenta quegeneralmente es una mala idea, pero en uncierto casos realmente necesitamos libertad para llamar sincrónicamente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta