Vi una entrevista con Ryan Dahl (el autor de Node.JS) en la que lamentaba haber tomado la decisión de no incluir Promises en Node.JS, y que este hecho estaba entre sus motivaciones para incluir Promises en Deno, lo que conceptualmente parece muy parecido a Node.JS. Sin embargo, por lo que puedo ver, Node.JS incluye Promesas y no veo por qué no lo haría, ya que se basa en V8. ¿Me estoy perdiendo de algo?
Ryan Dahl estaba hablando de un período mucho antes de que las promesas se convirtieran en parte de la especificación ECMAScript. Habló sobre esto en esta presentación "10 cosas que lamento sobre Node.js" (a las 5:40), con esta diapositiva:
Arrepentimiento: no cumplir con las promesas
- Agregué promesas a Node en junio de 2009, pero tontamente las eliminé en febrero de 2010.
- Las promesas son la abstracción necesaria para async/await.
- Es posible que el uso unificado de promesas en Node hubiera acelerado la entrega de la eventual estandarización y async/await.
- Hoy en día, muchas de las API asíncronas de Node están envejeciendo debido a esto.
Este fue un momento en que Node estaba en su primer año (cuando los números de versión comenzaban con 0), y aunque el concepto de promesas se conocía desde hace mucho tiempo , aún no estaba incluido en el estándar ECMAScript. Fue solo con ECMAScript 2015 que se incluyeron las promesas, y desde la versión 4 de Node en 2015, Node ha tenido este soporte nativo de promesas.
Si Node no hubiera abandonado las promesas en 2010, muchos módulos lo habrían usado y no habríamos terminado con tantos módulos asíncronos que están obsoletos o necesitaban una adaptación incómoda (con compatibilidad con versiones anteriores) para que funcionen con las promesas.
Un poco de investigación y/o una observación más constante de las entrevistas le darán la respuesta.
Dahl dijo que presentó las promesas a Node en 2009, pero más tarde, en febrero de 2010, las eliminó tontamente. Aquí está el enlace con el código de tiempo:
https://www.youtube.com/watch?v=M3BM9TB-8yA&t=309s
Más tarde, en 2012, Dahl se alejó de Node, lo que significa que las actualizaciones posteriores ya no estaban asociadas con él.
Seguramente Node.JS hoy en día tiene promesas, pero no es solo el mérito de Ryan.
Eso es todo, nada más, nada menos.