Experimental

I think this should depend on the given onError callback. We could add the error as an argument. Then, depending on the use case, the user could could just do some cleanup and propagate the error further or disable the constraint that caused the error without throwing it again. How about it?