Como fondo, tengo una función asíncrona que hace algo de lógica y eventualmente (si el navegador lo admite) devuelve un objeto Proxy. Esto es para admitir el código heredado más antiguo que esperaba un objeto que puede tener muchas funciones disponibles diferentes, según el nombre del controlador solicitado. El controlador puede tener muchas funciones diferentes, depende de las funciones API que estén disponibles en el controlador, por lo que solo permitimos cualquier nombre de función. Por ejemplo, un controlador puede tener un "controlador.xyz()" o "controlador.prueba()" o incluso "controlador.entonces()".
let x = 0; function getController() { return new Proxy({}, {get: () => () => `test${x}`}); } async function getControllerAsync() { return getController(); } function test(controller) { console.log(controller.x()); } test(getController()); getControllerAsync().then(test); // Expected: test0 and test1 should output to console // Actual: only test0 is output, the getControllerAsync() promise never resolvesSin embargo, el problema (creo) es que la función asíncrona (o una función de resolución de Promesa) cree que el objeto Proxy es un objeto "entonces posible", o al menos eso creo. Sin embargo, no entiendo, si ese fuera el caso, ¿por qué la Promesa no se resolvería en una cadena en lugar de nunca resolverse?