The attached 2.5m video explains better than my words below.
Apart from nice, non-intersecting polygons, the user is able to create two types of self-intersecting polygon: a polygon with a hole in it, and a 'twisted' complex polygon.
My problem is primarily with the twisted/complex polygons.
In the video I create a 4 point polygon that intersects itself.
(My code sets the symbol of the users drawn polygon as red if the polygons 'isSelfIntersecting' is true.)
Sometimes the creation will result in a correctly identified 'selfintersecting' polygon, sometimes it shows that the polygon is in fact non-intersecting - but at this point it has broken the polygon into two polygons!!
If the Sketch widget has decided it is a self-intersecting polygon, you can move it as a whole, or edit it's points. During this movement or editing, during the drag operations you can see it changes it's mind as to whether it's self intersecting or not. If you complete the move or edit in a state where it has decided it is not self-intersecting, it will still split the polygon into multiple polygons.
As far as a user-story is concerned, "the user should be told the polygon fails some validation, and they should then have the opportunity to fix it."
NB: If the user creates a regular polygon, then edits it, there is no problem in them making it self-intersecting, moving it, then fixing the self-intersection. The problems only seem to trigger if initially created with self-intersections.
I hope this collection of method paint a good enough picture - you can also see how I have tried to stop the user creating more than one polygon (there may be bugs in there!). Note I have referred to 'self-intersecting' as 'complex'...