Unity Test with multiple Build clients windows

I just fixed the problem with session, but now im experimenting a weird behaviour when player1 send request friend to player2 the player2 dosnt seems to show the request till he re login … and why is not getting the update im just cant understand since i think it was working at some point all fine.
this is what i use for send friend

public async void AddFriend()
    {
        if (AddfriendInput.text != string.Empty)
        {
            Nakama.ISession _session = await MiddleMan.Instance.GetSession();
            bool friendexist = await AddFriendByUsernameAsync(AddfriendInput.text, MiddleMan.Instance.GetNakamaHandler().Client, _session);
            if (friendexist == true)
            {
                RefreshFriendsList();
            }
        }
    }
public static async Task<bool> AddFriendByUsernameAsync(string username, IClient client, ISession session)
    {
        try
        {
            string[] usernames = new[] { username };
            await client.AddFriendsAsync(session, new string[] { }, usernames);
            return true;
        }
        catch (Exception e) //catching exception, if program entered this code adding friend operation was not successfully completed
        {
            Debug.Log("Adding friend failed (" + e.Message + ")");
            return false;
        }
    }
public static TaskScheduler unityTaskScheduler;
    public static SynchronizationContext unitySynchronizationContext;
    public static int unityThread;
    static public Queue<Action> runInUpdate = new Queue<Action>();
    public static bool isOnUnityThread => unityThread == Thread.CurrentThread.ManagedThreadId;
    public void Awake()
    {
        unitySynchronizationContext = SynchronizationContext.Current;
        unityThread = Thread.CurrentThread.ManagedThreadId;
        unityTaskScheduler = TaskScheduler.FromCurrentSynchronizationContext();
    }
    public static void RunOnUnityThread(Action action)
    {
        // is this right?
        if (unityThread == Thread.CurrentThread.ManagedThreadId)
        {
            action();
        }
        else
        {
            lock (runInUpdate)
            {
                runInUpdate.Enqueue(action);
            }

        }
    }
public async void Start()
    {
        await Initialize();
        Nakama.ISocket socket = await MiddleMan.Instance.GetSocket();
        socket.ReceivedStatusPresence += presenceEvent =>
        {
            Debug.Log(presenceEvent);
            foreach (var joined in presenceEvent.Joins)
            {
                string userj = joined.Username;
                RunOnUnityThread(() => {
                    // Do Unity stuff
                    UserGoesOnline(userj);
                });
                Debug.LogFormat("User id '{0}' status joined '{1}'", joined.UserId, joined.Status);
            }
            foreach (var left in presenceEvent.Leaves)
            {
                string userl = left.Username;
                RunOnUnityThread(() => {
                    // Do Unity stuff
                    UserLeaves(userl);
                });
                
                Debug.LogFormat("User id '{0}' status left '{1}'", left.UserId, left.Status);
            }
        };
    }
private async Task Initialize()
    {
        Nakama.ISession _session = await MiddleMan.Instance.GetSession();
        var result = await MiddleMan.Instance.GetNakamaHandler().Client.ListNotificationsAsync(_session, 10);
        foreach (var n in result.Notifications)
        {
            Debug.LogFormat("NOTIFICATION RECEIVED Subject '{0}' content '{1}'", n.Subject, n.Content);
            RefreshFriendsList();
            //FriendRequestPanel.SetActive(true);
        }
    }
public async void RefreshFriendsList()
    {
        //we clear our list
        for(int i=0;i< FriendsPrefabsList.Count; i++)
        {
            if (FriendsPrefabsList[i] != null)
            {
                Destroy(FriendsPrefabsList[i]);
            }
        }
        FriendsPrefabsList.Clear();

        Nakama.ISession _session = await MiddleMan.Instance.GetSession();
        Nakama.ISocket socket = await MiddleMan.Instance.GetSocket();
        var result = await MiddleMan.Instance.GetNakamaHandler().Client.ListFriendsAsync(_session);
        foreach (var f in result.Friends)
        {
            await socket.FollowUsersAsync(new[] { f.User.Id });
            if (f.State == 0 || f.State == 1 || f.State == 2) {
                GameObject newprefab = Instantiate(FriendRequestPrefab, content);
                FriendPrefab fp = newprefab.GetComponent<FriendPrefab>();
                FriendsPrefabsList.Add(newprefab);
                fp.Initialize(f.User.Username, f.State);
                if (f.User.Online == true)
                {
                    fp.SetOnlineDot();
                }
                else
                {
                    fp.SetOfflineDot();
                }
                Debug.LogFormat("Friend '{0}' state '{1}'", f.User.Username, f.State);
            }
        }
    }

i end up fixing my front end code and all works fine now the friends stuff, now the only problem im having is to figure out about the Decline request when a user decline the request i want to refresh from the requester the list for it removes at the moment but its seems there is no decline notification, anyways i dont see this would be too important coz my system prevent to players go further till they are both declared as friend… and the list will refresh after he click the friends button again or relogin so well i just want to say thanks and good proyect good luck.