Вы в then передаёте результат работыhttpGet, так как она вызывается незамедлительно.
В оригинальном примере функция вызывается внутри замыкания в момент резолва промиса.
Вы можете сделать так: .then(httpGet).
немного не понял. Почему она незамедлительно вызывается?
В учебнике написано "Если then возвращает промис, то до его выполнения может пройти некоторое время, оставшаяся часть цепочки будет ждать"
В вашем случае httpGet вызывается вне контекста промиса сразу при передаче в then. Вы понимаете разницу между передачей результата работы функции и передачей самой функции? В моём примере передаётся функция, в вашем - результат.
Только у меня ошибка, я её сейчас исправлю - переменной url же не существует, это результат работы промиса.