Why discard information?  The point of having Fun return 'wait' is to allow wait_for to exit with any desired status.  Just do
Any -> Any