In the wake of !499 and !7797 (merged), to simplify the async state machine.
By reducing the flags into one unified enum, this turns the async machine from this1:
to this1:
May not accurately reflect the actual state transitions. Please consult the code comment for the actual state machine. ↩ ↩2