Colocación de la captura ANTES y DESPUÉS

Tengo problemas para entender la diferencia entre poner.catch ANTES y DESPUÉS luego en una promesa anidada.

Alternativa 1:

test1Async(10).then((res) => {
  return test2Async(22)
    .then((res) => {
      return test3Async(100);
    }).catch((err) => {
      throw "ERROR AFTER THEN";
    });
}).then((res) => {
  console.log(res);
}).catch((err) => {
  console.log(err);
});

Alternativa 2:

test1Async(10).then((res) => {
   return test2Async(22)
     .catch((err) => {
        throw "ERROR BEFORE THEN";
      })
      .then((res) => {
        return test3Async(100);
      });
  }).then((res) => {
    console.log(res);
  }).catch((err) => {
    console.log(err);
  });

El comportamiento de cada función es el siguiente, test1 falla si el número es<0 test2 falla si el número es> 10 y test3 falla si el número no es100. En este caso, test2 solo falla.

Traté de ejecutar y hacer que test2Async falle, ANTES y DESPUÉS se comporta de la misma manera y eso no está ejecutando test3Async. ¿Alguien puede explicarme la diferencia principal para colocar la captura en diferentes lugares?

En cada función yoconsole.log('Running test X') para verificar si se ejecuta.

Esta pregunta surge debido al hilo anterior que publiqué¿Cómo convertir la devolución de llamada anidada en promesa?. Me imagino que es un problema diferente y vale la pena publicar otro tema.

Respuestas a la pregunta(2)

Su respuesta a la pregunta