How to tag a redraw in all viewports?
Figured it out.  This seems to work:
    def modal(self, context, event):
 
        for area in bpy.context.screen.areas: # iterate through areas in current screen
            if area.type == 'VIEW_3D':
                area.tag_redraw()