     case notFound
 }
 
-
 public final class ChannelHandlerContext : ChannelInvoker {
     
     // visible for ChannelPipeline to modify and also marked as weak to ensure we not create a

        }
    }
    
    func invokeChannelRead(data: IOData) {
        assert(inEventLoop)
        
        do {

        }
    }
    
    fileprivate func invokeRead(promise: Promise<Void>?) {
        assert(inEventLoop)
        
        self.outboundHandler.read(ctx: self, promise: promise)
    }
    
    fileprivate func invokeClose(promise: Promise<Void>?) {
        assert(inEventLoop)
        assert(promise.map { !$0.futureResult.fulfilled } ?? true, "Promise \(promise!) already fulfilled")

        self.outboundHandler.close(ctx: self, promise: promise)
    }
    
    fileprivate func invokeTriggerUserOutboundEvent(event: Any, promise: Promise<Void>?) {
        assert(inEventLoop)
        assert(promise.map { !$0.futureResult.fulfilled } ?? true, "Promise \(promise!) already fulfilled")
        
        self.outboundHandler.triggerUserOutboundEvent(ctx: self, event: event, promise: promise)
    }
    
    fileprivate func invokeHandlerAdded() throws {
        assert(inEventLoop)
        
        try handler.handlerAdded(ctx: self)
    }
    
    fileprivate func invokeHandlerRemoved() throws {
        assert(inEventLoop)
        try handler.handlerRemoved(ctx: self)
    }
