Refactored client connection code
Cleaned up error handling in the client
Rewriting error backtraces in SynchronousClient/PreparedStatement

Making them less confusing by replacing the backtrace from the async calls with `caller`