If the name of the calling function is wrong or the parameters passed are wrong, the call will always be stuck. Why not return an error. Setting waiter cannot solve the problem.
I had not heard this before let me ping some of the rust sdk folks.
Can you share some code where it gets stuck? There are many ways to call a canister in the agent-rs repo (ic-agent, ic-util, etc). It would help to know exactly what calls are getting stuck.