The biggest drawback in the client driver currently is that all the API functions are blocking.
Being able to pass a callback function to functions such as getLastError will not only lead to better design, but also a huge performance and concurrency increase.
The low level sockets are as far as I can deduce already asynchronous. It should be possible to build from that into an asynchronous event driven driver.
Since boost is already employed I recommend looking at asio and bind.