Mesh backface reverse only working when [ExecuteInEditMode] is present

I have the following script to reverse a mesh so a texture appears on the inside of it instead of the outside:

public class MeshReverse : MonoBehaviour {

	void Start () {
		var mesh = GetComponent<MeshFilter>().mesh;

		var szV = mesh.vertices.Length;
		var newNorms = new Vector3[szV];

		for (var j=0; j < szV; j++){
			//reverse normals
			newNorms[j] = -mesh.normals[j];

		var triangles = mesh.triangles;
		var szT = triangles.Length;
		var newTris = new int[szT];
		for (var i=0; i < szT; i+=3){
			//reverse triangles
			newTris _= triangles*;*_

* newTris[i+2] = triangles[i+1];*
* newTris[i+1] = triangles[i+2];*
* }*

* mesh.normals = newNorms;*
* mesh.triangles = newTris;*
* }*
When I remove [ExecuteInEditMode] the mesh is not reversed in Play mode or even in the built binary. Is this a bug? What are the side effects of [ExecuteInEditMode]?

It’s works perfectly in normal execution

Scene when execution is stopped


Scene when execution is running