What is the difference between them? The only thing I spot is the foo() being called inside do_foo(), which we agreed is an error.