In this case edgenet_fill operator failed and it would fallback to filling as unordered vertices which was mostly fine but failed on some concave loops. Add a new bmesh operator 'edgeloop_fill' fills in closed loops even if they don't make a valid edge-net.