Hello.
It seems to me that the following solution balances the different
viewpoints better:
1. Keep the base Awaitable interface, which defines an object that
can be awaited.
2. Introduce a FutureLike interface that extends Awaitable.
3. Modify the await() function so that it only accepts FutureLike objects.
4. Functions such as awaitAll or awaitAny may need to be renamed,
but that’s outside the scope of this RFC.
5. There will be no need to create a Future for functions designed
to work with an Awaitable object — this keeps the select case
syntax clean.
**Naming issue**
I see a certain inconsistency between await and Awaitable.
It might be worth coming up with a better name for Awaitable.
I remember that “Observable” was once suggested.