docs: def map(self, func, iterable, chunksize=None):
          """Equivalent of `map` built-in, without swallowing KeyboardInterrupt.
  
          func
            The function to apply to the items.
          iterable
            An iterable of items that will have `func` applied to them.
  
          """
          # The key magic is that we must call r.get() with a timeout, because a
          # Condition.wait() without a timeout swallows KeyboardInterrupts.
          r = self.map_async(func, iterable, chunksize)
  
          while True:
              try:
                  return r.get(self.wait_timeout)
              except TimeoutError:
                  pass
              except KeyboardInterrupt:
                  self.terminate()
                  self.join()
                  raise