¿Existe realmente una diferencia fundamental entre devoluciones de llamada y promesas?

Al hacer una programación asincrónica de un solo subproceso, hay dos técnicas principales con las que estoy familiarizado. El más común es usar devoluciones de llamada. Eso significa pasar a la función que actúa asincrónicamente una función de devolución de llamada como parámetro. Cuando finalice...