This feels frustrating, but it is a good forcing function for the quality of C# projects.
IMO it is a great alternative to simply deprecating/breaking older things and will slowly push the ecosystem towards .NET's recent language features, which will improve readability. If a company is not putting a .NET Framework -> .NET upgrade in their near future (which is a great time to go full async), you probably don't want to be in that job for too long.
You are clearly thinking about smaller projects. Larger projects can't survive a "stop the world" / "go async" migration. So, what do people do, they use GetAwaiter().GetResult knowing it is bad.
I was responsible for one of the largest .NET to .NET core migrations in history (3M LOC). Not a good time to also make everything async "while you are at it".
You will probably not see another major upgrade from .NET to new-shiny-thing in a decade or more, so you may as well take the extra time to do things right for .NET now, even for the largest projects.
There have been multiple LTS's to target, and once you are over the initial Framework -> .NET "hurdle", upgrading from there should be much easier.
>Larger projects can't survive a "stop the world" / "go async" project.
I don't know how it would be fatal unless the company doesn't want to give you the time for it - either because it doesn't make financial sense or they haven't been convinced. .NET is certainly one of the easier languages to refactor with confidence.
If it will never make financial sense, then I guess it'll go on to join the still-running COBOL projects, but that's an outlier.
> If a company is not putting a .NET Framework -> .NET upgrade in their near future (which is a great time to go full async)
For most cases, upgrading to Core is long overdue, but also that's a very good time to change as little as possible to get it to compile and work. Only then can you think about the massive refactoring of async.
IMO it is a great alternative to simply deprecating/breaking older things and will slowly push the ecosystem towards .NET's recent language features, which will improve readability. If a company is not putting a .NET Framework -> .NET upgrade in their near future (which is a great time to go full async), you probably don't want to be in that job for too long.