The current implementation assumes that `IOException` are random, so if we get one we'll start over and hope that we won't get another `IOException`