Incorrect work with TaskCompletionSource: if ContinueWith fails, source will never set failure not completion.

Use more modern "await" approach.