Master client connecting twice when ConnectUsingSettings called once

Options
Apologies if this has been covered before. I had a look through the forum but could not find a specific answer.

I'm trying to make a small racing game, and used the PUN tutorial on the Photon website as a guide to set up some basic networking. For the most part, it's working okay. I can connect to a Photon server, create a room, and have multiple users join the room. But every time the master client connects, OnConnectedToMaster() returns twice and creates two copies of the master client player prefab. This doesn't happen for any of the other clients that join.

To check that it wasn't an issue with my PC, I've tested a similar PUN project here and that works with no issues. I've also set my server whitelist to a single region but that hasn't made a difference.

I've gone through my code and can't seem to find anything that stands out, but have included it here just in case. Connect() is called by a button OnClick() event, which reveals a second button whose OnClick() event calls JoinRoom()

Any help would be greatly appreciated.
using UnityEngine;

using Photon.Pun;
using Photon.Realtime;

public class NetworkMenuLauncher : MonoBehaviourPunCallbacks
    {
        [SerializeField] private byte minPlayersPerRoom = 2;
        [SerializeField] private byte maxPlayersPerRoom = 4;
        [SerializeField] private string gameplaySceneName = "Freedrive";

        private bool isConnecting = false;

        private void Awake()
        {
            PhotonNetwork.AutomaticallySyncScene = true;
        }

        public override void OnEnable()
        {
            PhotonNetwork.AddCallbackTarget(this);
        }

        public override void OnDisable()
        {
            PhotonNetwork.RemoveCallbackTarget(this);
        }

        public override void OnConnectedToMaster()
        {
            Debug.Log("Successfully connected to master server");
        }

        public override void OnDisconnected(DisconnectCause _cause)
        {
            Debug.LogWarningFormat("Disconnected from server due to: {0}", _cause);
        }

        public override void OnJoinRandomFailed(short _returnCode, string _message)
        {
            Debug.Log("Error " + _returnCode + ". Joining random room failed due to: " + _message);
            
            Debug.Log("Attempting to create new room");
            PhotonNetwork.CreateRoom(null, new RoomOptions { MaxPlayers = maxPlayersPerRoom });
            isCreatingRoom = true;
        }

        public override void OnJoinedRoom()
        {
            Debug.Log("Client has joined room successfully");
            isCreatingRoom = false;
        }

        public override void OnPlayerEnteredRoom(Player newPlayer)
        {
            if (PhotonNetwork.CurrentRoom.PlayerCount == minPlayersPerRoom)
            {
                PhotonNetwork.CurrentRoom.IsOpen = false;

                if (PhotonNetwork.IsMasterClient)
                {
                    PhotonNetwork.LoadLevel(gameplaySceneName);
                }
            };
        }
       public void Connect()
        {
            if (!isConnecting)
            {
                isConnecting = true;
                Debug.Log("Attempting to connect to master server.");
                PhotonNetwork.GameVersion = "0.1";
                PhotonNetwork.ConnectUsingSettings();
            }
        }

        public void JoinRoom()
        {
            Debug.Log("Attempting to join random room");
            PhotonNetwork.JoinRandomRoom();
        }
    }