code: def _process_async_error(self, resp_body, error_class):
          
          def _fmt_error(err):
              # Remove the cumbersome Java-esque message
              details = err.get("details", "").replace("\n", " ")
              if not details:
                  details = err.get("message", "")
              return "%s (%s)" % (details, err.get("code", ""))
  
          error = resp_body.get("error", "")
          if "failedItems" in error:
              # Multi-error response
              faults = error.get("failedItems", {}).get("faults", [])
              msgs = [_fmt_error(fault) for fault in faults]
              msg = "\n".join(msgs)
          else:
              msg = _fmt_error(error)
          raise error_class(msg)
docs: The DNS API does not return a consistent format for their error
          messages. This abstracts out the differences in order to present
          a single unified message in the exception to be raised.