Estoy leyendo una publicación de blog sobre Promise.race, buscar y evitar fugas de memoria y hay una cosa que no entiendo del todo.
La implementación ingenua que mencionó en la publicación del blog provoca una pérdida de memoria
const request = fetch(url, options).then(response => response.json()); const timeout = new Promise((_, reject) => { setTimeout(() => { reject(new Error('Timeout')); }, 10000) }); Promise.race([ request, timeout ]).then(response => {}, error => {}) Entiendo que la devolución de llamada que pasamos a setTimeout contiene referencias a la función del constructor de la promesa, pero lo que no entiendo es que en la instantánea del montón que tomó al final de la publicación del blog muestra que hay muchos http.agent y los objetos Socket relacionados se mantuvieron debido a la versión en línea de setTimout. ¿Por qué tal implementación causaría la retención de los objetos http.agent y Socket? Pensé que iba a conservar la función del constructor de la promesa y eso es todo.