This implementation has lockless handler lists, which reduces the time
during which the handler map lock must be held. It doesn't unlink empty
lists from the map, but as long as the set of events to handle is fixed
and finite it's arguably better that way.