In my program there are multiple simulators, which are all managed by a single clock simulator. Top layer call Move() to advance and bottom layers are using AfterFunc() to schedule processing of next tick.
Unfortunately when time comes the function passed to AfterFunc() is executed in new goroutine. It means, that Move() will advance immediately, not even giving a chance for bottom layer to schedule processing of next tick. I need a function like Move(), but which will wait for all triggered tasks to be fully process until returning.