Fix wrapping into StopIteration of return values in generators and coroutines (#644) (#647)

diff --git a/Objects/genobject.c b/Objects/genobject.c
index 2680ab0..1c29e29 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -575,8 +575,7 @@
     PyObject *e;
 
     if (value == NULL ||
-        (!PyTuple_Check(value) &&
-         !PyObject_TypeCheck(value, (PyTypeObject *) PyExc_StopIteration)))
+        (!PyTuple_Check(value) && !PyExceptionInstance_Check(value)))
     {
         /* Delay exception instantiation if we can */
         PyErr_SetObject(PyExc_StopIteration, value);