It would break a bunch of guarantees you have right now. For example now you 100% can be sure that init is run to completion before any other function ever runs.
But you can emulate an async-allowed function in these function (except pre_upgrade). If you set a timer to run in 0 seconds it’ll run very soon and in there you’re allowed to do async calls
by the way. suggestions for viewers of this post:
ic doc dont recommend do any err prone code in pre_upgrade .
cause if it fail during canister upgrade process. Things may get bad .
I am one of the silly guy write buggy code on production canister.
Still strive to fix it yet.