How strict is the suspension point as a barrier. If, say, I have a code like this:
await task1()
let x = 1 + 1
can it move x
instantiation (which is executor-apathetic) across await
?
let x = 1 + 1
await task1()
Since we already optimize-out empty partial task, this seems about right, but then comes the question about what to do if the moved function consume a lot of time (either by being blocking, or just cpu-intensive). Maybe we need a notion of something that is executor-independent, but doesn't cross the suspension point.
(since this seems to apply to any executor model, not just actor, please feel free to move the comment if that's not the case)