Hey, Eric, I read all the thread, a lot of good points.
The comparison to async isn't entirely good.
`else` meaning "perform this block on successful completion" dates back to at least Python 1.4 (the earliest docs I could find), where Guido was dead-set on as few keywords as possible, and was also working basically on his own.
But the async keywords didn't enter the language until 3.4, and was not used until 3.5.
Python 3000 as it was called at the time was really the first opportunity for a breaking change in the language after it had become popular, and there was so much push back on even the essential changes, particularly distinguishing strings and byte strings (which now seems impossible to think of any other way, to be honest!) that Guido was not going to cause unnecessary stress by trying to deprecate obscure language features that were somewhat useful and did not consume any reserved words.
In fact, Guido wanted to remove the map, filter, and reduce keywords, his argument being that comprehensions and generators handled all of these, and that if you really wanted these you could still load them from a library, but again, he decided not to tilt at windmills after people pushed back on this.
So you will never see this usage change. I have just gotten used to thinking of else as "do this block on successful completion" in `for` and `try` statements. I use it in `try` statements about once a week and in `for` statements a few times a year...