Start of an effects system RFC (for async etc) - is there any interest in this?

There’s been concern in various comments about being able to make existing code do surprising things by mucking with its internals by overriding existing ambient authority.

Would it perhaps make sense to have - possibly only at first until we understand the issues here better, or possibly as a compromise solution for the long term - an approach in which callees must express in their types what effects they expect? That would definitely make the system less powerful, but it might still have some use, and I expect it would mitigate the “surprising behavior” problem. Related: pre-pre-RFC: Execution Context.