Every random() seconds doesn't make sense logically since the event is run every tick. So if random = 4 in one tick, and 2 in the next, 2 will come first, out of order.
There is no expression to get a named function's return value, that's the point.
The function object is global, so the return value can be changed by any function call.
Hopefully you can see where that could be an issue down the line.
Also pretty sure that While wont play nice in an event that's only triggered once