abstract class AbstractRestClient( clientSupplier: HttpClientEngineFactory, localCustomization: HttpClientConfig.() -> Unit = {}, ) : RestClient { protected open val clientConfiguration: HttpClientConfig = HttpClientConfig().apply { installLogging(logger) } protected val client: HttpClient by lazy { HttpClient(engine = clientSupplier.create {}, userConfig = clientConfiguration.apply(localCustomization)) }