Changing Cinemachine Follow in code with a coroutine

Looking for some help here. I wrote this code, which is intended to switch the follow transform inside the Cinemachine’s Follow function for a few seconds after a puzzle is solved, and then return it to the player. The trouble is that the coroutine executes for the first time perfectly, but then the camera begins to rapidly switch back and forth between the two transforms, making me think I’m creating some sort of coroutine loop. Any suggestions for how to resolve this? Setting puzzleSolved = false at the end of the coroutine doesn’t fix the issue, since an outside method is calling puzzleSolved as true in Update.

using Cinemachine;

public class Dungeon : MonoBehaviour
{

public GameObject player;
public CinemachineVirtualCamera followCamera;
public bool puzzleSolved;

void Update()
{
if (puzzleSolved)
{
StartCoroutine(ChangeCameraPosition());
}
}

IEnumerator ChangeCameraPosition()
{
followCamera.Follow = transform;
yield return new WaitForSeconds(3);
followCamera.Follow = player.transform;
}
}

Use a second virtual camera and use the coroutine to change the priority

I figured out how to end the loop by calling the bool once and then nulling it immediately after, which solved the issue. I think creating a second camera in this instance without solving the bool loop would still result in a bouncing camera.