In the IstioRevisionTag controller, the reconciler returns custom error types in order to properly write to the resource status as well as to preserve the original error, should there be one. We should use this pattern throughout all controllers.
We should aim to keep the Is<ErrorType> functions around as those are standard in k8s and well-readable.