Should we keep it as an `Option`? As we have generalized `maxAttempts`, just a lazy val would be sufficient.