docs: def raise_errors(self, response):
          """The innermost part - report errors by exceptions"""
          # Errors: 400, 403 permissions or REQUEST_LIMIT_EXCEEDED, 404, 405, 415, 500)
          # TODO extract a case ID for Salesforce support from code 500 messages
  
          # TODO disabled 'debug_verbs' temporarily, after writing better default messages
          verb = self.debug_verbs  # NOQA pylint:disable=unused-variable
          method = response.request.method
          data = None
          is_json = 'json' in response.headers.get('Content-Type', '') and response.text
          if is_json:
              data = json.loads(response.text)
          if not (isinstance(data, list) and data and 'errorCode' in data[0]):
              messages = [response.text] if is_json else []
              raise OperationalError(
                  ['HTTP error "%d %s":' % (response.status_code, response.reason)]
                  + messages, response, ['method+url'])
  
          # Other Errors are reported in the json body
          err_msg = data[0]['message']
          err_code = data[0]['errorCode']
          if response.status_code == 404:  # ResourceNotFound
              if method == 'DELETE' and err_code in ('ENTITY_IS_DELETED', 'INVALID_CROSS_REFERENCE_KEY'):
                  # It was a delete command and the object is in trash bin or it is
                  # completely deleted or it could be a valid Id for this sobject type.
                  # Then we accept it with a warning, similarly to delete by a classic database query:
                  # DELETE FROM xy WHERE id = 'something_deleted_yet'
                  warn_sf([err_msg, "Object is deleted before delete or update"], response, ['method+url'])
                  # TODO add a warning and add it to messages
                  return None
          if err_code in ('NOT_FOUND',           # 404 e.g. invalid object type in url path or url query?q=select ...
                          'METHOD_NOT_ALLOWED',  # 405 e.g. patch instead of post
                          ):                     # both need to report the url
              raise SalesforceError([err_msg], response, ['method+url'])
          # it is good e.g for these errorCode: ('INVALID_FIELD', 'MALFORMED_QUERY', 'INVALID_FIELD_FOR_INSERT_UPDATE')
          raise SalesforceError([err_msg], response)