UL LI UL задаёт цвет текста во вложенном UL.
Но UL SPAN задаёт цвет текста тега SPAN, т.е. он не будет пытаться унаследовать цвет текста, у него задан собственный цвет.
LI SPAN имеет такую же специфичность, но ему не повезло, при прочих равных побеждает последний.
Если вы про 4xx/5xx ошибки, то с точки зрения fetch это не ошибки и они точно так же доступны в then.
В ваш catch вы попадёте только при сетевой ошибке (нет сети, не работает DNS, неправильные заголовки авторизации и т.п.) и в этом случае никакого тела ошибки нет по определению.