Pradeep, Guido and I are leaning toward removing the `async` part of PEP 677.
There are several reasons:
- If we leave `async` in, then `async (int) -> bool` and `(int) -> Awaitable[bool]` are the same
- This violates that there should only be one obvious way to do things
- It also might lead to a mismatch between written types and the errors returned by type
checkers, leading to unnecessary confusion
- It looks like < 5% of callable types return Awaitable anyway
- It has explicitly been brought up in python-dev as unnecessary complexity, and we largely
agree with this criticism.
I wanted to float the idea of cutting `async` here first since so many folks from this thread
contributed to the proposal in PEP 677. If there's no strong opposition, I'll probably remove
it after the holidays.