private void OnRecieved(IAsyncResult ar)
        {
            ReaderStateObject stateObj = (ReaderStateObject)ar.AsyncState;

            try
            {
                stateObj.UpdateContext();

                int readNum = _socket.EndReceive(ar);
                if (0 == readNum)
                {
                    throw GetClosedException();
                }

                _linesBuilder.PutData(_recvBuffer, readNum, false);
                BuildResponse(stateObj);
            }
            catch (Exception e)
            {
                stateObj.Exception = e;
                stateObj.SetCompleted();
            }
            catch
            {
                NSTrace.WriteLineError("Non-CLS exception at: " + Environment.StackTrace);
                throw;
            }
        }