def test_unhandled_exception(self):
        streamer = stream_data(self.handler)
        self.assertEqual(len(next(streamer)), 10)
        with self.assertRaises(StopIteration):
            streamer.throw(RuntimeError)

        self.assertTrue(self.handler.is_closed)
    def test_unhandled_exception(self):
        streamer = stream_data(self.handler)
        self.assertEqual(len(next(streamer)), 10)
        with self.assertRaises(StopIteration):
            streamer.throw(RuntimeError)

        self.assertTrue(self.handler.is_closed)
    def test_throw_controlled_exception(self):
        streamer = stream_data(self.handler)

        self.assertEqual(len(next(streamer)), 10)
        streamer.throw(CustomException)
        self.assertEqual(len(next(streamer)), 10)
    def test_throw_controlled_exception(self):
        streamer = stream_data(self.handler)

        self.assertEqual(len(next(streamer)), 10)
        streamer.throw(CustomException)
        self.assertEqual(len(next(streamer)), 10)