I think the title describes it. But, when I print(task) on LocalScript it returns the expected result, though after being replicated through RemoteEvent only {} is returned.
As far as I know task is a read-only table, what can cause the problem then?
Sending task, coroutine, or anything such, isn’t ever needed. But to answer the question, the problem is the result of the client-server boundary. Remote events cannot replicate functions, arguments have to be serialized before they are sent, metatables are lost etc.