NIOTS TCP Chat Client

My chat handler basically looks like this. I am not sure this Is the correct approach.

public typealias ServerDataReceived = (ChatData) -> ()

class ChatHandler: ChannelOutboundHandler, ChannelInboundHandler {

public var dataReceived: ServerDataReceived?

    public func channelRead(context: ChannelHandlerContext, data: NIOAny){
    switch self.currentlyWaitingFor {
    case .dataFromServer:
        var result = self.unwrapInboundIn(data)
        let readableBytes = result.readableBytes
        if let received = result.readData(length: readableBytes) {
            
//dataReceived is always is nil so never runs
            if let dataReceived = dataReceived {
                print(dataReceived, "2")
                let chatData = ChatData(data: received)
                dataReceived(chatData)
            }
        }
    case .error(let error):
        fatalError("We have a fatal receiving data from the server: \(error)")
    }
}
}