function mockLanternTimings(tasks, linearScale) {
      /** @type {LH.Gatherer.Simulation.Result['nodeTimings']} */
      const tbtNodeTimings = new Map();

      for (const task of tasks) {
        // Only top level tasks will have a CPU node in lantern
        if (task.parent) continue;

        /** @type {LH.Gatherer.Simulation.GraphCPUNode} */
        // @ts-expect-error fake CPU node to use as a map key
        const node = {
          type: 'cpu',
          event: task.event,
        };

        tbtNodeTimings.set(node, {
          startTime: task.startTime * linearScale,
          endTime: task.endTime * linearScale,
          duration: task.duration * linearScale,
        });
      }

      return tbtNodeTimings;
    }
Creates a fake lantern node timings map for the given tasks.
Assumes the throttling scales the task timing linearly by `linearScale`.
@param {LH.Artifacts.TaskNode[]} tasks
@param {number} linearScale
@return {LH.Gatherer.Simulation.Result['nodeTimings']}