Currently, we prevent users from trying to produce multiple ControlFlow::Suspend errors within a single execution run of a durable task (e.g. calling ctx.sleep_for multiple times without awaiting and propagating ControlFlow::Suspend).
We should consider doing more:
- Block all usage of the
TaskContext after ControlFlow::Suspend is produced (e.g. don't allow spawning any new tools).
- Adjust the durable SQL functions to prevent the 'wait' state from getting overwritten for a particular task run (though we need to make sure that this doesn't break retries)