То есть убрать +room-card() из "room-card-template.pug", ведь используется только миксин.
"Изначально рабочий миксин" — в шаблоне объект с данными был записан статично прямо в файле pug, никакой переменной room там не было, я полагаю. И теперь, нужно выдать пустой результат расшифровки шаблона "room-card-template.pug", в нём не нужно вызывать миксин, для чего надо убрать +room-card(), — данных же нет, они позже загружаются.
И дополнительно, проверить бы способ с импортом функции-миксина из "room-card.pug", непонятно что происходит с миксином, когда он проходит через обобщающий шаблон "room-card-template.pug".
На сокет повешан таймаут, то есть, когда данные перестанут идти, то спустя время будет выставлен флаг таймаута и, вероятно, заблокирован сокет. Вот и проверять в цикле состояние сокета: таймаут или завершение.
Самое простое, разбивать текстовый файл через пустые строки, в полученных отрывках выбирать первое слово как значение для сравнения, и составить ассоциации первых слов со своими отрывками. А в программе будет выбор отрывка по переменной или выражению из ассоциативной карты: Object, Map, Array — как удобнее.
Дальнейшее зависит от того, как значения из файла будут интерпретироваться скриптом. Может быть, выбранный отрывок будет результатом сам по себе, или его придётся расшифровывать по словам и сочетаниям и также пропускать через другие ассоциативные карты.