How to Update the WaitForSeconds timer after a condition is met?

So im trying to update the timer when a condition is met, in my case here is when the camera follows the player, here is the code:

public class SpawnManager : MonoBehaviour
{
    public GameObject[] toSpawn;
    public GameObject[] spawnEnemies;
    public GameObject[] spawnEnv;
    public GameObject[] powerUps;
    private PlayerController playerCS;

    public float envTimer = 5;

    // Start is called before the first frame update
    void Start()
    {
        playerCS = GameObject.Find("Player").GetComponent<PlayerController>();

        StartCoroutine(EnvStartWaiter());
    }

    IEnumerator EnvStartWaiter()
    {
        while (true && !playerCS.gameOver)
        {
            // Spawn Bridge Columns
            Vector3 columnPos = new Vector3(transform.position.x, -3, 30);
            Instantiate(spawnEnv[0], columnPos, spawnEnv[0].transform.rotation);

            // Spawn Trees
            int randomLeftTree = Random.Range(1, 3);
            Vector3 treesLeftPos = new Vector3(-4, -3, 40);

            int randomRightTree = Random.Range(1, 3);
            Vector3 treesRightPos = new Vector3(4, -3, 40);

            Instantiate(spawnEnv[randomLeftTree], treesLeftPos, spawnEnv[randomLeftTree].transform.rotation);
            Instantiate(spawnEnv[randomRightTree], treesRightPos, spawnEnv[randomRightTree].transform.rotation);

            // Spawn Light Columns
            Vector3 lightColumnPosleft = new Vector3(-4, -3, 50);
            Vector3 lightColumnPosRight = new Vector3(4, -3, 50);

            Instantiate(spawnEnv[5], lightColumnPosRight, spawnEnv[5].transform.rotation);
            Instantiate(spawnEnv[4], lightColumnPosleft, spawnEnv[4].transform.rotation);

            yield return new WaitForSeconds(envTimer);
        }
    }

If you want to wait until a condition is met inside a coroutine you can yield return a WaitUntil instance.

Here’s a reference: Unity - Scripting API: WaitUntil