При этом при получении нового запроса, данные о старом не затирались и после выполнения асинхронного запроса в бд, возвращал нужному клиенту
Модель работы PostgreSQL вообще не такая (если я правильно понял, что Вам нужно), т.е. 1 сессия = 1 (только одна!) активная транзакция = N запросов в ней.
Поэтому Вам нужны отдельные соединения, всякие "асинхронности" в протоколе — это для сокращения сетевого траффика... если повезёт.