Colocação das capturas ANTES e DEPOIS

Tenho problemas para entender a diferença entre colocar.catch Antes e depois, em uma promessa aninhada.

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);
  });

O comportamento de cada função é o seguinte, test1 falha se número for<0 test2 falha se o número for> 10 e test3 falhará se o número não for100. Nesse caso, test2 está apenas falhando.

Tentei executar e fazer com que test2Async falhasse, ANTES e DEPOIS, se comporta da mesma maneira e isso não está executando o test3Async. Alguém pode me explicar a principal diferença para colocar capturas em lugares diferentes?

Em cada função euconsole.log('Running test X') para verificar se é executado.

Esta questão surge por causa do tópico anterior que publiqueiComo transformar retorno de chamada aninhado em promessa?. Eu acho que é um problema diferente e vale a pena postar outro tópico.

questionAnswers(2)

yourAnswerToTheQuestion