code: def test_wait_interactive_first_exception(self):
      dv = self.client[:]
  
      ar = dv.apply_async(time.sleep, 0.2)
      ar.wait_interactive(return_when=ipp.FIRST_EXCEPTION)
      assert ar.done()
  
      def fail(i):
          print(i)
          import time
  
          if i == 0:
              print(1 / i)
          time.sleep(1)
          return i
  
      amr = dv.map_async(fail, range(len(dv)))
      tic = time.perf_counter()
      amr.wait_interactive(timeout=5, return_when=ipp.FIRST_EXCEPTION)
      toc = time.perf_counter()
      assert toc - tic < 4
      done, pending = amr.wait(
          timeout=0, return_when=ipp.FIRST_EXCEPTION
      )
      assert done
      assert len(done) == 1
      first_done = done.pop()
      assert first_done.msg_ids == amr.msg_ids[:1]
  
imports: import os
  import time
  from datetime import datetime
  import pytest
  from IPython.utils.io import capture_output
  import ipyparallel
  from ipyparallel import error
  from .clienttest import ClusterTestCase, raises_remote
label_desc: Use image node_id 38 for calling the TestAsyncResult obj's underlying member method code with example usage: obj.test_wait_interactive_first_exception() and returns: i