trio.sleep(float('nan')) currently sleeps forever. Fixing it is pretty trivial by reordering the if statements but there's maybe other stuff that would break with NaN, and it might not be worth fixing a theoretical issue that idk if it might ever happen in reality - though I could imagine it biting somebody somewhere.
for reference: time.sleep() gives a ValueError, asyncio.sleep() sleeps for 0