Wrap Event based functions into awaitable Tasks - Meet TaskCompletionSource
You might have code where an object offers you an event to notify you when a specific operation is done. But event's can be tricky to use, especially when you want to have a continuous flow in your application.
That is where
TaskCompletionSource comes into play. We can "transform" an event based function into something which is await-able from the outside world via the