Thinking about the pb, I think that the serialisation of the callback code must me handle inside the callback.
I am almost sure that execution of a new callback, the previous one not completely handled, will produce conflict
Good luck with the @Janeer proposal which look to me very sensible