     
     // sync method to read length
     private func readLength() throws -> Int {
-        //assert(DispatchQueue.getSpecific(key: OP_QUEUE_SPECIFIC_KEY) == OP_QUEUE_SPECIFIC_VAL,
-        //       "this method should only be run at sepcific queue")
+        assert(DispatchQueue.getSpecific(key: QueueSpecifi.ReadKey) == QueueSpecifi.ReadValue,
+               "this method should only be run at sepcific queue")
         
         guard let socket = socket else {
             throw SessionError.socketIsNil

    }
    
    private func tl_read() throws {
        //assert(DispatchQueue.getSpecific(key: OP_QUEUE_SPECIFIC_KEY) == OP_QUEUE_SPECIFIC_VAL,
        //       "this method should only be run at sepcific queue")
        
        let header = try readHeader()
        let remainLength = try readLength()

    
    // read variable header and payload
    private func readPayload(len: Int) throws -> [UInt8] {
        assert(DispatchQueue.getSpecific(key: QueueSpecifi.ReadKey) == QueueSpecifi.ReadValue,
               "this method should only be run at sepcific queue")
        
        guard let socket = socket else {
            throw SessionError.socketIsNil
