I think it's related to the uninstaller spawning another process that does the actual uninstalling. Once the first process returns, Ansible kills the connection, and with it the spawned process, I think. win_package does have a special parameter to enable waiting for subprocesses to finish before continuing, but it didn't work when I tried.
I found the solution in the 'async' parameter. It waits for a specified maximum amount of time. This is the configuration that works for me: