— how often do you expect "done" to be logged, twice? That kind of control flow would be surprising to most people. A section of code is entered once, and left once1.
Promises aren’t resumable because they don’t do any work. A promise is a placeholder for the future result of work that has likely already been completed. They’re not an appropriate abstraction to use when you want to deal with async work prior to its failure or success.