https://en.m.wikibooks.org/wiki/Haskell/do_notation
rough analogy: `await` replaces `.then()`, do-notation replaces `.flatMap()`
rough analogy: `await` replaces `.then()`, do-notation replaces `.flatMap()`
To be more precise, it was when .NET 3.5 was new (2008). That brought a lot of visibility to Nullable<T> because it was featured prominently in LINQ. But ?. didn't come until C# 6 (2014). I was wrong about ??, though - that one was added along with Nullable itself.