why did we stop looping in these cases. I can see why we'd stop after an error, but why stop after a `new_child`?