message: refactor(core): update `noSideEffects()` to return the result of the inner function
  This is useful for propagating return values without them being converted to a string. It still provides the same guarantees to Closure, which will assume that the function invoked is pure and can be tree-shaken accordingly.
  PR Close
diff: * to something which is retained otherwise the call to `noSideEffects` will be removed by closure
  * compiler.
  */
  -export function noSideEffects(fn: () => void): string {
  - return '' + {toString: fn};
  +export function noSideEffects<T>(fn: () => T): T {
  + return {toString: fn}.toString() as unknown as T;
  }
  