really timeout correctly in all cases