return new Promise((resolve, reject) => {
fetch(url).then(data => resolve(data.json())).then(null, err => {throw err})
})
1) fetch(url) в итоге отклоняется.
2) then(data => resolve(data.json())) будет поскипано: здесь только обработка фулфилледа, которого, увы, не случилось
3) then(null, err => {throw err}) - а вот это уже catch. Он перевыбросит исключение. Но поздно, throw случается в "асинхронном" коде, и не отлавливается конструктором промиса. Здесь надо вручную вызвать reject:
then(null, reject)
теперь сообщение доходит до консоль.лога
Но это всё, конечно, лютая наркомания. Не пиши так. За такой необычный код тебя вскроют.