If we don't get a response from a command in a while, resend it. This doesn't normally happen (it only happened during firmware development), but it makes command sending more robust, so let's keep it. This also uses a single OVERLAPPED for a whole command, which is simpler.