asyncio.run_coroutine_threadsafe submits a coroutine to an event loop from another thread without blocking, then immediately returns a concurrent.futures future for accessing its result. section 7.4.2
Unlike asyncio.run, which waits for completion, this function keeps a Tkinter interface responsive while an asyncio loop runs in a separate thread. Its returned future is thread-safe because asyncio futures are not. section 7.4.2
Submitting a stress test
A StressTest.start method calls asyncio.run_coroutine_threadsafe(self._make_requests(), self._loop) and stores the returned future while the asyncio loop performs URL requests.
