code: def test_executor_map_current_future_cancel(self):
      stop_event = threading.Event()
      log = []
  
      def log_n_wait(ident):
          log.append(f"{ident=} started")
          try:
              stop_event.wait()
          finally:
              log.append(f"{ident=} stopped")
  
      with self.executor_type(max_workers=1) as pool:
          # submit work to saturate the pool
          fut = pool.submit(log_n_wait, ident="first")
          try:
              with contextlib.closing(
                  pool.map(log_n_wait, ["second", "third"], timeout=0)
              ) as gen:
                  with self.assertRaises(TimeoutError):
                      next(gen)
          finally:
              stop_event.set()
          fut.result()
      # ident='second' is cancelled as a result of raising a TimeoutError
      # ident='third' is cancelled because it remained in the collection of futures
      self.assertListEqual(
          log, ["ident='first' started", "ident='first' stopped"]
      )
  
imports: import contextlib
  import multiprocessing
  import multiprocessing.process
  import multiprocessing.util
  import os
  import threading
  import unittest
  from concurrent import futures
  from test import support
  from .executor import ExecutorTest, mul
  from .util import BaseTestCase, ThreadPoolMixin, setup_module
label_desc: Use image node_id 6 for calling the ThreadPoolExecutorTest obj's underlying member method code with example usage: obj.test_executor_map_current_future_cancel() without return types