// decoratorAsyncMethod(this,function,wrapper) async function decoratorMethod( target: T, method: () => Promise, wrapper: (result: R) => Promise, executeImmediately: boolean = true ): Promise { const execute = async () => { try { const result = await method.call(target); return wrapper(result); } catch (error) { return Promise.reject(error instanceof Error ? error : new Error(String(error))); } }; if (executeImmediately) { return execute(); } else { return execute; } }