// https://javascript.info/promise-chaining

// .then() returns a new Promise when you do "return",
// internally calling resolve().

new Promise(function (resolve, reject) {
  setTimeout(() => resolve(1), 1)
}).then(function (result) {
  console.log(result)
  return result * 2
}).then(function (result) {
  console.log(result)
  return result * 2
}).then(function (result) {
  console.log(result)
  return result * 2
})

/*
      It will print
      1
      2
      4
  */

/*
    It means that "then" is internally implemented roughly as follows:

    function then(f){
      return new Promise(function(resolve, reject) {
          resolve(f());
      })
    }
  */

// Another example:

fetch('http://www.fsf.org')
// .then below runs when the remote server responds
  .then(function (response) {
    // response.text() returns a new promise that resolves with the full response text
    // when it loads
    return response.text()
  })
  .then(function (text) {
    // ...and here's the content of the remote file
    console.log(text)
  })