class AbstractEthTask implements EthTask<T> {

  @Override
  public final CompletableFuture<T> run() {
    if (!result.isDone() && started.compareAndSet(false, true)) {
      executeTaskTimed();
      result.whenComplete((r, t) -> cleanup());
    }
    return result;
  }

  protected  AbstractEthTask(final MetricsSystem metricsSystem);
  protected  AbstractEthTask(final OperationTimer taskTimer);

}