Even though the block is created on node2, the sync is only between node1 and node0. Accordingly the test fails if I put a sleep in msg_type == NetMsgType::HEADERS processing: In this case, node1 and node0 do not hear about the new  block, the sync still passes because they are in sync with each other, and later on in the test_input_confs_control subtest, node1 would generate a forked block instead of building on the previous one, leading to test failure.
Haven’t seen this in the CI, but I ran into it on an experimental branch.