Rather than early quit on the first error, we collect on any error and keep going. The final returned error contains all collected errors.
This should improve the user experience. Rather than fixing the errors one-by-one, a user could fix them all at once.