static async compute_(metricComputationData, context) {
    const tbtResult = await TotalBlockingTime.request(metricComputationData, context);
    const tasks = await MainThreadTasks.request(metricComputationData.trace, context);

    const {startTimeMs, endTimeMs} = await this.getTbtBounds(metricComputationData, context);

    if ('pessimisticEstimate' in tbtResult) {
      return this.computeImpactsFromLantern(
        tasks,
        tbtResult.pessimisticEstimate.nodeTimings,
        startTimeMs,
        endTimeMs
      );
    }

    return this.computeImpactsFromObservedTasks(tasks, startTimeMs, endTimeMs);
  }
@param {LH.Artifacts.MetricComputationDataInput} metricComputationData
@param {LH.Artifacts.ComputedContext} context
@return {Promise<LH.Artifacts.TBTImpactTask[]>}