Update() Called multiple times (in a single Frame?) before function returns

Hi,

I need clarification on how Update works in my example program.
What I am facing seems to be completely strange to me. Probably because I do not fully understand how Update calls work.

My script is attached to the player and looks like the one below
What I expect is, as soon as any RayCast succeeds, it will draw a ray to show the RayCast and the freeze the game.
But when I run the game, I can see multiple drawn Rays before the game freezes. Meaning before the Time.timeScale is set to 0, the Update() is called multiple times!

What is happening here? Why is another Frame called before the function calls in the previous frame returns?

I can clarify is my question or the code is not clear. (I could not add the complete code for reasons)

        void Update () 
	{
		if (!TPCC.Grounded () || Input.GetKeyDown (KeyCode.Space)) 
		{
			EnvScan ();
		}
	}

	void EnvScan()
	{
             //Program does around 90 Raycasts for various reasons
             for (float i = 90; i >= 0; i--) 
             {
                  if (Physics.Raycast (transform.position,
				    rayDirection,
				    out hit,
				    distance
			    )) 
                   {
                        HitCheck(hit);
                   }
             }
	}

        void HitCheck (RaycastHit p_hitDetails)
        {
              //Does processing specific to the hit
              //....
              //....

                Debug.drawRay (.....);
               //I just freeze the game using the below code to check and 
               //understand what happens
              Time.timeScale = 0.0f;
        }

Physics occur during fixed update. Which by default occur 60 times a second.

Update occurs as often as possible which with a good pc on a simple project could be hundreds of times a second. I believe time. Timescale is also a physics thing, not an update thing, update still runs, place things in fixed update instead and try that

There is one thing I will try.
I will replace Update with FixedUpdate and lose the ‘input.getkey’. Hopefully this will make sure things are in sync.
Will post results when done. If anyone can make suggestions in the meantime it is much appreciated.