How to inflate part of string

While building a NNTP client in NodeJS, I have encountered the following problem. When calling the XZVER command, the first data I receive from the socket connection contains both a string and an inflated string;

224 compressed data follows (zlib version 1.2.3.3)
^*�u�@����`*�Ti���d���x�;i�R��ɵC���eT�����U'�|/S�0���� rd�
                                                   z�t]2���t�bb�3ѥ��>�͊0�ܵ��b&b����<1/    �C�<[<��d���:��VW̡��gBBim�$p#I>5�cZ�*ψ%��u}i�k�j
                                                                                                                                    �u�t���8�K��`>��im

When I split this string and try to inflate it like this;

lines = chunk.toString().split('\r\n');
response = lines.shift();

zlib.inflate(new Buffer(lines.shift()), function (error, data) {
    console.log(arguments);
    callback();
});

I receive the following error;

[Error: invalid code lengths set] errno: -3, code: 'Z_DATA_ERROR'

Any help is welcome, I am kinda stuck here :(

UPDATE

After implementing the answer of mscdex, the whole function looks like this;

var util = require('util'),
    zlib = require('zlib'),
    Transform = require('stream').Transform;

function CompressedStream () {
  var self = this;

  this._transform = function (chunk, encoding, callback) {
    var response = chunk.toString(),
        crlfidx = response.indexOf('\r\n');

    response = response.substring(0, crlfidx);
    console.log(response);

    zlib.gunzip(chunk.slice(crlfidx + 2), function (error, data) {
      console.log(arguments);
      callback();
    });
  };

  Transform.call(this/*, { objectMode: true } */);
};

util.inherits(CompressedStream, Transform);

module.exports = CompressedStream;

You should probably avoid using split() in case those two bytes are in the raw data. You might try something like this instead:

var response = chunk.toString(),
    crlfidx = response.indexOf('\r\n');
// should probably check crlfidx > -1 here ...
response = response.substring(0, crlfidx);

zlib.inflate(chunk.slice(crlfidx + 2), function (error, data) {
    console.log(arguments);
    callback();
});

However if you're doing this inside a 'data' event handler, you should be aware that you may not get the data you expect in a single chunk. Specifically you could get a CRLF split between chunks or you could get multiple responses in a single chunk.

It seems that my chunks were incorrectly encoded. By removing socket.setEncoding('utf8');, the problem was solved.