Bindable function returns nil

I’m gonna sum up the scripts.

The invoker client invokes the function with parameters, and it gets sent to the client that responds.

Responder client responds by creating a GUI with buttons, and returns the first buttons ID that is pressed, with MouseButton1Click connecting it.

I have tested the scripts with printing, it shows the gui, buttons, and it closes itself when i press a button. It also connects to the button press and prints the button ID.
The invoker client is delayed 5 seconds for testing purposes, then prints the return value.

It’s nil. Why is that? Its returned before the value is printed.

Bindable functions do not communicate between clients. With a remote function you can invoke from a client to the server, and you can invoke from the server to a client (though this is usually a bad idea)

Doesnt bindable functions usually return something? Im returning it. Its not returning.

It does, but there isn’t a “Responder” client and a “Invoker” client, with a bindable function it will be the same client talking to themselves. If you understand this then please copy a snippet of your code, specifically the bindable function’s OnInvoke = my_function and appropriate function my_function()

sorry if this sounds rude but it sounds like a bunch of stuff that isnt gonna work, do you know how these things work or are you testing how it works?