     
     func registerOnEventLoop(initPipeline: (ChannelPipeline) throws ->()) {
         // Was not registered yet so do it now.
-        safeRegister(interested: .Read)
-        
-        do {
-            try initPipeline(pipeline)
-        
-            pipeline.fireChannelRegistered()
-        } catch let err {
-            pipeline.fireErrorCaught(error: err)
-            close0()
+        if safeRegister(interested: .Read) {
+            neverRegistered = false
+            do {
+                try initPipeline(pipeline)
+                
+                pipeline.fireChannelRegistered()
+            } catch let err {
+                pipeline.fireErrorCaught(error: err)
+                close0()
+            }
+
         }
     }
 


    private let pendingWrites: PendingWrites = PendingWrites()
    private var readPending: Bool = false

    public private(set) var allocator: ByteBufferAllocator = ByteBufferAllocator()
    private var recvAllocator: RecvByteBufferAllocator = FixedSizeRecvByteBufferAllocator(capacity: 8192)

        case .Write:
            safeReregister(interested: .All)
        case .None:
            safeReregister(interested: .Read)
        default:
            break
        }
