Да, там много недостатков. Завязка на ActionCaller (привязываем форматтер к роутеру). Стрим конвертер который управляет риспонсом. Это из разряда хвост виляет собакой. Дполнительный рендерер мидлтварь, которую всегда нужно задавать. Нет ленивого рендеринга в эмиттере. Нет возможности форматировать после чсистой мидлтвари в экшине. Еще что-то было но я уже не упомню все.
как же с тобой не просто ) ActionCaller пришлось переписать т.к. в роутере плохое решение; ленивый рендеринг - не цель и уже решено, что не нужен. Про заголовки конвертера в сопроводительном письме я сразу написал. Мидлварь на рендеринг - нормально, во много раз лучше, чем рендеринг и привязка заголовка по getBody() ответа (плюс сам решаешь, когда рендерить). И не рендеринг, а конвертирование данных в нужный формат )