I get different behavior than you describe (running on my Sun box). There are no "leftover characters" either way, but as noted the "Die" event is only discarded if -recurse=>1 is set. Perhaps this is a portability issue?
That seems to be the case - running it on a Linux box here leaves no leftovers either. With recurse, the "Die" event is discarded during the ->update, or after the Unbusy with idletasks.