A ordem poderia ser a seguinte:
1.1
2.1
listagem livros
1.2
2.2
Entendo que primeiro seria executado o console.log('1.1') do primeiro middleware. Depois a função next() do primeiro middleware passaria para a execução do console.log('2.1') do segundo middleware. Como não há outros middleware para serem executados, a rota seria ativada e o console.log('listagem livros') executado.
Não entendi o porquê do controle ter voltado para o segundo middleware executando o console.log('2.2') ao invés de ter voltado para o primeiro middleware e executado antes o console.log('1.2').