Better user event support; make WITH-EVENT-LOOP only optionally recursive