Since we handle ej validation errors by catching it's throws, I've got a question about how this works in practice.

Does ej validate the whole spec before returning a list of all the failures, or does it simply fail fast?

If it validates the whole spec, by validating the common components first, we could get ourselves into a situation where we return incomplete validation to a user, they fix it, and still return an invalid object because not all the validation ran the first time.

I'm not really sure how much I'm worried about this in practice.