Make handle_signal() responsible for recording its own events.

This greatly simplifies some changes coming with #293.