I would like to get a deeper understanding of how Promises work internally. Therefore I have some sample code:
var p1
Promise then return promise object, not promise's resolved value. I forked your JsFiddle, and added some of mine try this.
then
promise object
promise's resolved value
promise.then is executed right after that promise object is resolved.
promise.then