Совершенно мне непонятно, что вы этим кодом хотели сказать. Но.
не уходит в catch фетча
Вы ошибаетесь, уходит.
не передается дальше в catch промиса
Потому что вы её уже обработали в первом catch. Если зачем-то хотите, чтобы она ушла дальше по цепочке catch, её надо бросить заново.
Если вам зачем-то необходимо оборачивать promise из fetch в другой (а это вряд ли), то код должен выглядеть так:
const url = 'https://jsonplaceholder.typicode.co'
const getUser = async () => {
return new Promise((resolve, reject) => {
fetch(url).then(data => resolve(data)).catch(err => reject(err))
}).catch(err => err.message)
}
Но он полностью аналогичен этому:
const url = 'https://jsonplaceholder.typicode.co'
const getUser = async () => fetch(url).catch(err => err.message)
Только этот код "проглатывает" ошибку и возвращает её текст из функции, а в случае успеха возвращает не полученные данные, а весь объект ответа, на котором нужно дополнительно вызывать
.json()
или
.text()
.