Use Time::HiRes::alarm so fractional timeouts work