diff --git a/Lib/posixpath.py b/Lib/posixpath.py
index 84bcc13..7a4daa8b 100644
--- a/Lib/posixpath.py
+++ b/Lib/posixpath.py
@@ -83,11 +83,12 @@
             else:
                 path += sep + b
     except TypeError:
-        strs = [isinstance(s, str) for s in (a, ) + p]
-        if any(strs) and not all(strs):
+        valid_types = all(isinstance(s, (str, bytes, bytearray))
+                          for s in (a, ) + p)
+        if valid_types:
+            # Must have a mixture of text and binary data
             raise TypeError("Can't mix strings and bytes in path components.")
-        else:
-            raise
+        raise
     return path
 
 
diff --git a/Lib/test/test_posixpath.py b/Lib/test/test_posixpath.py
index 1ec4a15..89c4f9e 100644
--- a/Lib/test/test_posixpath.py
+++ b/Lib/test/test_posixpath.py
@@ -1,6 +1,7 @@
 import unittest
 from test import support, test_genericpath
 
+import itertools
 import posixpath
 import os
 import sys
@@ -56,18 +57,21 @@
         self.assertEqual(posixpath.join(b"/foo/", b"bar/", b"baz/"),
                          b"/foo/bar/baz/")
 
-        # Check for friendly str/bytes mixing message
-        for args in [[b'bytes', 'str'],
-                     [bytearray(b'bytes'), 'str']]:
-            for _ in range(2):
+        def check_error_msg(list_of_args, msg):
+            """Check posixpath.join raises friendly TypeErrors."""
+            for args in (item for perm in list_of_args
+                              for item in itertools.permutations(perm)):
                 with self.assertRaises(TypeError) as cm:
                     posixpath.join(*args)
-                self.assertEqual(
-                    "Can't mix strings and bytes in path components.",
-                    cm.exception.args[0]
-                )
-                args.reverse()  # check both orders
+                self.assertEqual(msg, cm.exception.args[0])
 
+        check_error_msg([[b'bytes', 'str'], [bytearray(b'bytes'), 'str']],
+                        "Can't mix strings and bytes in path components.")
+        # regression, see #15377
+        with self.assertRaises(TypeError) as cm:
+            os.path.join(None, 'str')
+        self.assertNotEqual("Can't mix strings and bytes in path components.",
+                            cm.exception.args[0])
 
     def test_split(self):
         self.assertEqual(posixpath.split("/foo/bar"), ("/foo", "bar"))
