In my opinion, this pattern breaks when the validation must return an error and everything becomes very verbose.