abstract suspend fun getOrCreate(key: K, generator: suspend (key: K) -> CompletableDeferred<V>, callOnCacheHit: suspend () -> Unit): CompletableDeferred<V>