RemoteEvent FireServer Argument Overlapping

The problem I’m having is that my RemoteEvent is including every past argument of FireServer when it’s firing to the server again.
Script Example: (I’m posting this instead of the actual script because it would be too much of a hassle to post the entire 400+ lines script so take it with a grain of salt)

--Local
UIS.InputBegan:Connect(function(Input, GPE)
    if Input.KeyCode == Enum.KeyCode.E and not GPE then
        RemoteEvent:FireServer("a")
    end
end)
UIS.InputEnded:Connect(function(Input, GPE)
    if Input.KeyCode == Enum.KeyCode.E and not GPE then
        RemoteEvent:FireServer("B")
    end
end)
--Server
RemoteEvent.OnServerEvent:Connect(function(player, state)
    if state == "a" then
        print("The state is:" ..state)
    elseif state == "b" then
        print("The state is:" ..state)
    end
end)

Are you sure it’s including every past argument or just only those fire?

If A get fired before B, then when B get fired it would fire B first and then it would later A instantaneously, if B get fired before C, then when C get fired it would first C, then B, then A.

where does C comes from? <3 button

I just added C to the scenario just to make it clear that it’s including every past argument instead of just the previous.

It’s probably because both of them are firing at the same time that it picks a random one.
Why do you fire two events at once anyway?

I didn’t, sorry if some words got mixed up but, the first fireserver only fire when the player presses E, and then the second fireserver would only fire after the player has stopped pressing E.