I think you might need to override the Host header when proxying to it. It likely expects the domain to match. By default, Caddy passes the Host of the original request through.
handle_errors {
rewrite * /{http.error.status_code}
reverse_proxy https://http.cat {
header_up Host http.cat
}
}