Callbacks promissores retornando promessas

Com relação a essas duas grandes fontes:NZakas - retornando promessas em cadeias de promessas ePromessas MDN, Gostaria de perguntar o seguinte:

Cada vez que retornamos um valor de um manipulador de cumprimento de promessas, como esse valor é passado para a nova promessa retornada desse mesmo manipulador?

Por exemplo,

let p1 = new Promise(function(resolve, reject) {
    resolve(42);
});

let p2 = new Promise(function(resolve, reject) {
    resolve(43);
});

let p3 = p1.then(function(value) {
    // first fulfillment handler
    console.log(value);     // 42
    return p2;
});

p3.then(function(value) {
    // second fulfillment handler
    console.log(value);     // 43
});

Neste exemplo,p2 é uma promessa.p3 também é uma promessa originária dep1manipulador de cumprimento. Contudop2 !== p3. Em vez dep2 de alguma forma magicamente resolve43 (como?) e esse valor é passado parap3manipulador de cumprimento. Até a frase aqui é confusa.

Você poderia me explicar o que exatamente está acontecendo aqui? Estou totalmente confuso com esse conceito.

questionAnswers(4)

yourAnswerToTheQuestion