processResponse is convoluted and tricky, and the transaction_results array holds too many things
*processResponse often duplicates a bunch of switch structure that also exists in the functions that parse out errors, data, and communications status. we can subsume those into processResponse for less duplication
*We should throw an exception with code and retry vars instead of returning an error code and mutating one of the arguments.