Only handle one watch at a time
When traversing the list of watches that have fired, only handle one at
at time, since handling one might cause other watches to be removed or
added, at which point our traversal of the list will go awry. (Should
fix #1055521.)