hopefully clearer explanation of fireOnFirstError behaviour