code: def test_done_callback_raises(self):
      with support.captured_stderr() as stderr:
          raising_was_called = False
          fn_was_called = False
  
          def raising_fn(callback_future):
              nonlocal raising_was_called
              raising_was_called = True
              raise Exception("doh!")
  
          def fn(callback_future):
              nonlocal fn_was_called
              fn_was_called = True
  
          f = Future()
          f.add_done_callback(raising_fn)
          f.add_done_callback(fn)
          f.set_result(5)
          self.assertTrue(raising_was_called)
          self.assertTrue(fn_was_called)
          self.assertIn("Exception: doh!", stderr.getvalue())
  
imports: import threading
  import time
  import unittest
  from concurrent import futures
  from concurrent.futures._base import PENDING, RUNNING, CANCELLED, CANCELLED_AND_NOTIFIED, FINISHED, Future
  from test import support
  from .util import PENDING_FUTURE, RUNNING_FUTURE, CANCELLED_FUTURE, CANCELLED_AND_NOTIFIED_FUTURE, EXCEPTION_FUTURE, SUCCESSFUL_FUTURE, BaseTestCase, create_future, setup_module
label_desc: Use image node_id 4 for calling the FutureTests obj's underlying member method code with example usage: obj.test_done_callback_raises() without return types