 
     // This is `Channel` API so must be thread-safe.
     public final var pipeline: ChannelPipeline {
-        return self.lifecycleManager.channelPipeline
+        return self._pipeline
     }
 
     // MARK: Methods to override in subclasses.

        self.closePromise = eventLoop.newPromise()
        self.parent = parent
        self.recvAllocator = recvAllocator
        self.lifecycleManager = SocketChannelLifecycleManager(channelPipeline: ChannelPipeline(channel: self))
        // As the socket may already be connected we should ensure we start with the correct addresses cached.
        self.addressesCached.store(Box((local: try? socket.localAddress(), remote: try? socket.remoteAddress())))
    }


    }

    // MARK: properties
    private let eventLoop: EventLoop
    // this is queried from the Channel, ie. must be thread-safe
    internal let isActiveAtomic: Atomic<Bool>
    // these are only to be accessed on the EventLoop
    private var currentState: State = .fresh {
        didSet {
            assert(self.eventLoop.inEventLoop)
