In the process of debugging an issue I have I tried understanding send_async_request better.
When sending multiple notifications using send_async_request if one of the calls to the API results in a timeout, this throws an Exception. At that point it's unclear which of the requests succeeded and which ones might need to be retried.
I think calling asyncio.gather with return_exceptions=True might be closer to what I was expecting, but my understanding of asyncio is still limited.
Nice to have is probably some way to set a number of automatic retries on timeout.