… overall client operation
Exceptions on the server will now be caught and converted to exceptions of Taps::BaseError whenever possible. It will allow the client to raise the same exception that the server did and handle specific cases more gracefully. Taps::DuplicatePrimaryKeyError is one example of this where the server successfully inserted data but the response that was given to the client was an error (http 50x). Handling Taps::DuplicatePrimaryKeyError now allows us to go back and ask the server what the maximum primary key value is and adjust the DataStream state accordingly allowing for a graceful resume.