If i use async function, during the await Task.delay() , It starts another task

I am using a simple function without any update as given

   public async void ObjSupport_PositionArrivedAsync(string Coordinate, double Value)
    {
        turret2carriage = GameObject.Find("Turret2Carriage");
       float ivalue = (float)Value;
        switch (Coordinate)
        {
              case "Z+":
                {
                           Vector3 turret2position = 
                  turret2carriage.transform.localPosition;
                        float turret2currentXpos = turret2position.x;
                        turret2position.x = Mathf.Clamp(turret2position.x + ivalue, -1200f, 500f);
                        while (turret2currentXpos <= turret2position.x)
                        {
                            
                            await Task.Delay(100); 
                            turret2currentXpos += 10f;
                            Vector3 posX = 
                               new Vector3(turret2currentXpos, turret2position.y, turret2position.z);
                                turret2carriage.transform.localPosition = posX;
                        }
                   }
                 break;
            case "Z-":
                {
                        Vector3 turret2position = turret2carriage.transform.localPosition;
                        float turret2currentXpos = turret2position.x;
                        turret2position.x = Mathf.Clamp(turret2position.x - ivalue, -1200f, 500f);
                        while (turret2currentXpos >= turret2position.x)
                        {
                            await Task.Delay(100);
                            turret2currentXpos -= 10f;
                            Vector3 posX =
                         new Vector3(turret2currentXpos, turret2position.y, turret2position.z);
                            turret2carriage.transform.localPosition = posX;
                          
                        }
                        }
                break;
        }
    }

I am calling this function from another script . from where I pass Z+ or Z- with value.But during await Task.Delay(100); it go back and starts executing another call. And continue them like that.
What I want is that during the await Task.Delay(100); the execution should stay there ,It should not goback .

When you call an async method will need to use the await keyword:

await arr.ObjSupport_PositionArrivedAsync("Z-", Port.CurrentPositionZ - Port.ZValue);

More at Asynchronous programming in C# | Microsoft Learn