diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index 3f412b7..b25f3c4 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -1234,6 +1234,7 @@
         class G:
             pass
         self.assertRaises(TypeError, zip, a, G())
+        self.assertRaises(RuntimeError, zip, a, TestFailingIter())
 
         # Make sure zip doesn't try to allocate a billion elements for the
         # result list when one of its arguments doesn't say how long it is.
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index f9e8a97..2b6da64 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -321,10 +321,11 @@
                     self.sofar.append(n*n)
                     n += 1
                 return self.sofar[i]
-
-        self.assertEqual(self.func(lambda x, y: x+y, ['a', 'b', 'c'], ''), 'abc')
+        def add(x, y):
+            return x + y
+        self.assertEqual(self.func(add, ['a', 'b', 'c'], ''), 'abc')
         self.assertEqual(
-            self.func(lambda x, y: x+y, [['a', 'c'], [], ['d', 'w']], []),
+            self.func(add, [['a', 'c'], [], ['d', 'w']], []),
             ['a','c','d','w']
         )
         self.assertEqual(self.func(lambda x, y: x*y, range(2,8), 1), 5040)
@@ -332,15 +333,27 @@
             self.func(lambda x, y: x*y, range(2,21), 1),
             2432902008176640000
         )
-        self.assertEqual(self.func(lambda x, y: x+y, Squares(10)), 285)
-        self.assertEqual(self.func(lambda x, y: x+y, Squares(10), 0), 285)
-        self.assertEqual(self.func(lambda x, y: x+y, Squares(0), 0), 0)
+        self.assertEqual(self.func(add, Squares(10)), 285)
+        self.assertEqual(self.func(add, Squares(10), 0), 285)
+        self.assertEqual(self.func(add, Squares(0), 0), 0)
         self.assertRaises(TypeError, self.func)
         self.assertRaises(TypeError, self.func, 42, 42)
         self.assertRaises(TypeError, self.func, 42, 42, 42)
         self.assertEqual(self.func(42, "1"), "1") # func is never called with one item
         self.assertEqual(self.func(42, "", "1"), "1") # func is never called with one item
         self.assertRaises(TypeError, self.func, 42, (42, 42))
+        self.assertRaises(TypeError, self.func, add, []) # arg 2 must not be empty sequence with no initial value
+        self.assertRaises(TypeError, self.func, add, "")
+        self.assertRaises(TypeError, self.func, add, ())
+        self.assertRaises(TypeError, self.func, add, object())
+
+        class TestFailingIter:
+            def __iter__(self):
+                raise RuntimeError
+        self.assertRaises(RuntimeError, self.func, add, TestFailingIter())
+
+        self.assertEqual(self.func(add, [], None), None)
+        self.assertEqual(self.func(add, [], 42), 42)
 
         class BadSeq:
             def __getitem__(self, index):
diff --git a/Misc/NEWS b/Misc/NEWS
index 7deedeb..904d0c2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -45,6 +45,9 @@
 Extensions
 ----------
 
+- Issue #665761: ``functools.reduce()`` will no longer mask exceptions
+  other than ``TypeError`` raised by the iterator argument.
+
 - Issue #9570: Use PEP 383 decoding in os.mknod and os.mkfifo.
 
 - Issue #6915: Under Windows, os.listdir() didn't release the Global
diff --git a/Modules/_functoolsmodule.c b/Modules/_functoolsmodule.c
index bf2ea3b..3437353 100644
--- a/Modules/_functoolsmodule.c
+++ b/Modules/_functoolsmodule.c
@@ -302,8 +302,9 @@
 
     it = PyObject_GetIter(seq);
     if (it == NULL) {
-        PyErr_SetString(PyExc_TypeError,
-            "reduce() arg 2 must support iteration");
+        if (PyErr_ExceptionMatches(PyExc_TypeError))
+            PyErr_SetString(PyExc_TypeError,
+                            "reduce() arg 2 must support iteration");
         Py_XDECREF(result);
         return NULL;
     }
