yes, it’s somewhat controversial whether flatMap should happen across threads, what is a true Monad, or quasi-monad. I don’t want to go there right now.
For the lib I just need to make sure that flatMap runs the new Deferred on the same coroutine as the existing one, without jumping execution contexts. async { } by default uses CommonPool, so I need to give the equivalent of “don’t jump execution context” or the one from the existing Deferred