Декораторы для Http сервера на uWebSockets.js

Не получается совместить декораторы.

Декоратор авторизации:

import { IsAuth } /* Промис авторизации */
import { HttpRequest, HttpResponse } from "uWebSockets.js";

export default function Authorized(role?: string) {
  return (target: Object, propertyKey: string, descriptor: PropertyDescriptor) => {
    const original = descriptor.value;
    descriptor.value = async function (
      res: HttpResponse,
      req: HttpRequest,
      ...args: any[]
    ) {
      let valid = true;
      res.onAborted(() => (valid = false));

      const auth = await IsAuth(req.getHeader("authorization")).catch((err) => {
        if (valid) return res.writeStatus("401 Unauthorized").end(err);
      });
      if (auth) {
        console.info("info: @Authorized." + propertyKey, args);
        return original.apply(this, [res, req, ...args, auth]);
      }
    };
  };
}

Декоратор считывания тела запроса:

import { readBody } /* Промис считывания тела запроса */
import { HttpRequest, HttpResponse } from "uWebSockets.js";

export default function JsonBody(maxPayloadLength = 512) {
  return (target: Object, propertyKey: string, descriptor: PropertyDescriptor) => {
    const original = descriptor.value;
    descriptor.value = async function (
      res: HttpResponse,
      req: HttpRequest,
      ...args: any[]
    ) {
      let valid = true;
      res.onAborted(() => (valid = false));

      const body = await readBody(res, maxPayloadLength).catch((err) => {
        console.info("info: @JsonBody." + propertyKey, err);
      });
      if (body) {
        console.log("body", body);
        return original.apply(this, [res, req, ...args, JSON.parse(body)]);
      }
    };
  };
}

По отдельности они работают, но при совмещении их вместе сервер замирает после этапа авторизации на считывании тела. Буду благодарен за какие нибудь примеры реализации или в чем моя ошибка.

  @Authorized()
  @JsonBody()
  static Settings(res, req, user, body) {
      // To Do...
  }

Ответы (0 шт):