public bool TryLogin(TcpClient client, out ClientHandle handle) { IPrimitiveConnection?primConn = null; IMessageConnection? msgConn = null; try { primConn = new TcpPrimitiveConnection(client); // TODO(@MattWindsor91): handshake etc. msgConn = new MessageConnection(primConn, _decoderFunc); handle = new ClientHandle(msgConn); // Prevent disposals in finally block below. primConn = null; msgConn = null; return(true); } finally { msgConn?.Dispose(); primConn?.Dispose(); client?.Close(); } }