io with timeout