JsonDecoder.orElse relies on the self.unsafeDecode throwing an exception to continue to the next decoder.
https://github.com/zio/zio-json/blob/series/2.x/zio-json/shared/src/main/scala/zio/json/JsonDecoder.scala#L118-L128
This is likely unnecessarily expensive, as it produces an error that will never be read.
It also doesn't help that orElse accepts the other decoder as a by-name parameter, which can re-instantiate an encoder if users are not careful.