             throw err
         }
         
-        super.init(socket: socket, eventLoop: eventLoop)
-    }
-    
-    fileprivate init(socket: Socket, eventLoop: SelectableEventLoop) throws {
+        try super.init(socket: socket, eventLoop: eventLoop)
+    }
+    
+    fileprivate override init(socket: Socket, eventLoop: SelectableEventLoop) throws {
         try socket.setNonBlocking()
-        super.init(socket: socket, eventLoop: eventLoop)
+        try super.init(socket: socket, eventLoop: eventLoop)
     }
     
     override fileprivate func readFromSocket() throws {

/*
 All operations on SocketChannel are thread-safe
 */
final class SocketChannel : BaseSocketChannel {
    
    init(eventLoop: SelectableEventLoop) throws {
        let socket = try Socket()

        assert(eventLoop.inEventLoop)
        do {
            try socket.bind(local: local)
            try self.socket.listen(backlog: backlog)
            promise.succeed(result: ())
            pipeline.fireChannelActive0()
        } catch let err {
