In this specific case, echo can't fail to there's no need for any of that:
[ -z "$1" ] && echo "fail" >&2 && exit 1
Echo will fail here when stderr is closed. For example when the caller of the script pipes stderr to another command and that command exits.
Echo will fail here when stderr is closed. For example when the caller of the script pipes stderr to another command and that command exits.