regresar a la lección

Promesa: then versus catch

¿Son iguales estos fragmentos de código? En otras palabras, ¿se comportan de la misma manera en cualquier circunstancia, para cualquier función de controlador?

promise.then(f1).catch(f2);

Versus:

promise.then(f1, f2);

La respuesta corta es: no, no son iguales:

La diferencia es que si ocurre un error en f1, entonces aqui es manejado por .catch:

promise
  .then(f1)
  .catch(f2);

…Pero no aquí:

promise
  .then(f1, f2);

Esto se debe a que se pasa un error por la cadena y en la segunda pieza del código no hay una cadena debajo de f1.

En otras palabras, .then pasa los resultados/errores al siguiente .then/catch. Entonces, en el primer ejemplo, hay un catch debajo, y en el segundo no lo hay, por lo que el error no se maneja.