         // means we have started a frame, whether it is a control frame or not
         // someone will "read" it.  So if there are no read requests it means
         // there is eventually bound to be one
-        if reader.processingPayload && currentReadRequest != nil && !frameReadStarted
+        if frameReader.processingPayload && currentReadRequest != nil && !frameReadStarted
         {
             assert(!frameReadStarted)
             frameReadStarted = true

                        }
                        let replyCode = WSFrame.Opcode.CloseFrame
                        let message = self.startMessage(replyCode)
                        self.messageWriter.write(message, maskingKey: 0, source: source, isFinal: true, callback: completion)
                    }
                    else if frame.opcode == WSFrame.Opcode.PingFrame
                    {
                        let source = BufferPayload(buffer: self.controlFrameBuffer, length: length)
                        let replyCode = WSFrame.Opcode.PongFrame
                        let message = self.startMessage(replyCode)
                        self.messageWriter.write(message, maskingKey: 0, source: source, isFinal: true, callback: completion)
                    } else {
                        // ignore others (but finish their payloads off first)!
                        completion?(error: nil)

            let currentBuffer = theReadRequest.buffer.advancedBy(theReadRequest.satisfied)
            let remaining = theReadRequest.remaining
            //            Log.debug("Message Reader Started reading next frame body, Type: \(self.currentFrame.opcode), Remaining: \(remaining)")
            frameReader.read(currentBuffer, length: remaining, fully: theReadRequest.fully) { (length, error) in
                self.frameReadStarted = false
                if error == nil
                {
                    assert(length >= 0, "Length cannot be negative")
