export function jsCallable, Return>( fn: (...rest: Args) => Return | Promise, ): (...rest: Args) => Promise { return async (...args: Args): Promise => { try { // Promises and is safe to use on non-promises return await fn(...args); } catch (error: any) { // eslint-disable-next-line no-console console.error(error); throw error; } }; }