`setup` will accept a coroutine, which will initialize the connection before returning it from `pool.acquire()` (setup listeners etc).