break on first invalid, actually async