See: https://docs.python.org/3/library/asyncio-dev.htmldetect-never-retrieved-exceptions
And: https://docs.python.org/3/library/asyncio-task.htmlrunning-tasks-concurrently
Because gather is by default propagating the first exception that gets raised and would subsequently be cancelled by the calling function it leaves the tasks that haven't finished yet running.
As those aren't awaited anymore they can cause a 'Task exception was never retrieved' when they raise en exception.
Changing the return_exceptions parameter to True when using gather in these causes should prevent these uncaught/unretrieved exceptions.