It was possible to have a "lost wakeup" situation where we had stuff to
send but the trio worker was blocked indefinitely in the receive.
There is no test for this as the race is very race-y and I can't reproduce it
reliably in the test suite, though I was able to do reliable replication a different
way when debugging.
I also reordered event processing to happen after timer handling but before sending
in the trio and sync quic code. The async code already worked this way due to its
different struture and needed no changes.