def _process_response(self, response):
        """ Processes a response from the drive.

        Processes the response returned from the drive. It is broken
        down into the echoed command (drive echoes it back), any error
        returned by the drive (leading '*' is stripped), and the
        different lines of the response.

        Parameters
        ----------
        response : str
            The response returned by the drive.

        Returns
        -------
        processed_response : list
            A 4-element ``list``. The elements, in order, are `response`
            (``str``), the echoed command (``str``), any error response
            (``None`` if none, or the ``str`` of the error), and the
            lines of the response that are not the echo or error line
            (``list`` of ``str`` with newlines stripped).

        """
        # Strip the trailing newline and split the response into lines
        # by carriage returns.
        rsp_lines = response.rstrip('\r\n').split('\r')

        # If we have at least one line, the first one is the echoed
        # command. If available, it needs to be grabbed and that line
        # removed from rsp_lines since it is just the echoing, not the
        # actual response to the command. None will be used to denote a
        # non-existent echo.
        if len(rsp_lines) > 0:
            echoed_command = rsp_lines[0]
            del rsp_lines[0]
        else:
            echoed_command = None

        # If the next line is one of the different possible error
        # strings, then there was an error that must be grabbed (leading
        # '*' is stripped). If there was an error, remove that line from
        # the response. None will be used to denote the lack of an error.
        if len(rsp_lines) > 0 and \
                rsp_lines[0] in ('*INVALID_ADDRESS', '*INVALID_DATA', \
                '*INVALID_DATA_HIGH', '*INVALID_DATA_LOW', \
                '*UNDEFINED_LABEL'):
            err = rsp_lines[0][1:]
            del rsp_lines[0]
        else:
            err = None

        return [response, echoed_command, err, rsp_lines]
Processes a response from the drive.

        Processes the response returned from the drive. It is broken
        down into the echoed command (drive echoes it back), any error
        returned by the drive (leading '*' is stripped), and the
        different lines of the response.

        Parameters
        ----------
        response : str
            The response returned by the drive.

        Returns
        -------
        processed_response : list
            A 4-element ``list``. The elements, in order, are `response`
            (``str``), the echoed command (``str``), any error response
            (``None`` if none, or the ``str`` of the error), and the
            lines of the response that are not the echo or error line
            (``list`` of ``str`` with newlines stripped).