Название start_link звучит обнадёживающе, но что клиент на самом деле узнал после возврата этого вызова?
В гипотетическом сервисе кеша init возвращает {:ok, state, {:continue, :warm_cache}}. Вызов запуска ждёт возврата из init. Затем продолжение выполняет дополнительную работу в handle_continue. Само подтверждение запуска ещё не устанавливает, что кеш прогрет. Внутри этого GenServer клиентские запросы не выполняются одновременно с продолжением.
Представим клиента, который видит благополучный индикатор запуска и сразу запрашивает значение из кеша. Если индикатор означает лишь возврат из функции инициализации, слово готов обещает слишком много. Стоит ли отложить готовность до завершения прогрева или показывать Warming и ограничить число ожидающих запросов? Если ожидание разрешено, что тайм-аут должен удалять из ожидающей работы сервиса?
При перезапуске под надзором нужно снова принять то же решение. Перезапуск процесса и восстановление пригодного к использованию кеша являются разными обещаниями. Я бы оставил слово готов для условия, которое действительно требуется этим клиентам.