Ok Michael, let me try to give it another shot:
1st:
"This has nothing to do with the discard operator, but is simply due to the fact that you don't do an "await LongRunning()". This statement self-contradictory. Discarding is all about NOT using await.
2nd:
Using Console.RealdLine() makes the Main function wait infinitely, which makes your LongRunning execute fully. However, this is not a real-life scenario. We don't know how long the Main function will take to finish after discarding an async function.
Thus, all I am trying to say is that if you are discarding an async function, you shouldn't use await inside that async function as it doesn't guarantee the execution of code after that. It may execute if the Main is still not finished - there you are right.