The Java rest client's synchronous calls throw exceptions in "funny" ways that seem to come with all the disadvantages of async code. When they throw an exception they only have the stack trace from the innards of the http-async client and they don't get decorated with suppressed exceptions if thrown from inside of a finally block. This makes debugging failures difficult and I'm going to look into fixing it.