what I meant was that with a coroutine-native implementation (where the library would be written in kotlin and exposes suspendable functions to the user) the callee would be guaranteed that the same resources in terms of thread pool size would be used when accessing the AMQP resource. With a solution where you call something that only returns CompletableFuture, you have to think about how those thread pools work