 	public func disconnect() {
 		TCPSocket.workingThread.perform {
 			self.disposeStreams()
-			self.status = .closed
+			self.status = .closed(nil)
 			self.delegateQueue?.async {
 				self.delegate?.socketDidDisconnect(self)
 			}

	}
	
	private func handleError(error: Error) {
		guard status != .error else {
			return
		}
		status = .error
		delegateQueue?.async {
			self.delegate?.socket(self, didFailWithError: error)
		}

	
	public init(with config: Config) {
		self.config = config
		self.status = .closed(nil)
		inputStreamDelegate = StreamDelegate(cInputStream)
		outputStreamDelegate = StreamDelegate(cOutputStream)
	}
