     
     // sync method to read a header
     private func readHeader() throws -> FixedHeader {
-        //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

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

    
    // sync method to read length
    private func readLength() throws -> Int {
        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
