diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index df9a6b6..be322a0 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -1429,11 +1429,9 @@
    *target_is_directory*, which defaults to ``False``.
 
    On Windows, a symlink represents a file or a directory, and does not morph to
-   the target dynamically.  For this reason, when creating a symlink on Windows,
-   if the target is not already present, the symlink will default to being a
-   file symlink.  If *target_is_directory* is set to ``True``, the symlink will
-   be created as a directory symlink.  This parameter is ignored if the target
-   exists (and the symlink is created with the same type as the target).
+   the target dynamically.  If *target_is_directory* is set to ``True``, the
+   symlink will be created as a directory symlink, otherwise as a file symlink
+   (the default).
 
    Symbolic link support was introduced in Windows 6.0 (Vista).  :func:`symlink`
    will raise a :exc:`NotImplementedError` on Windows versions earlier than 6.0.
@@ -1446,7 +1444,6 @@
       administrator level. Either obtaining the privilege or running your
       application as an administrator are ways to successfully create symlinks.
 
-
       :exc:`OSError` is raised when the function is called by an unprivileged
       user.
 
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 4da1f1d..e573bd2 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -476,7 +476,12 @@
             f.write("I'm " + path + " and proud of it.  Blame test_os.\n")
             f.close()
         if support.can_symlink():
-            os.symlink(os.path.abspath(t2_path), link_path)
+            if os.name == 'nt':
+                def symlink_to_dir(src, dest):
+                    os.symlink(src, dest, True)
+            else:
+                symlink_to_dir = os.symlink
+            symlink_to_dir(os.path.abspath(t2_path), link_path)
             sub2_tree = (sub2_path, ["link"], ["tmp3"])
         else:
             sub2_tree = (sub2_path, [], ["tmp3"])
@@ -1106,7 +1111,7 @@
             os.remove(self.missing_link)
 
     def test_directory_link(self):
-        os.symlink(self.dirlink_target, self.dirlink)
+        os.symlink(self.dirlink_target, self.dirlink, True)
         self.assertTrue(os.path.exists(self.dirlink))
         self.assertTrue(os.path.isdir(self.dirlink))
         self.assertTrue(os.path.islink(self.dirlink))
diff --git a/Misc/NEWS b/Misc/NEWS
index fba506c..3b0752e 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -108,6 +108,10 @@
 Library
 -------
 
+- Issue #13772: In os.symlink() under Windows, do not try to guess the link
+  target's type (file or directory).  The detection was buggy and made the
+  call non-atomic (therefore prone to race conditions).
+
 - Issue #6631: Disallow relative file paths in urllib urlopen methods.
 
 - Issue #13722: Avoid silencing ImportErrors when initializing the codecs
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 673877a..0afab3c 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -5330,7 +5330,6 @@
     PyObject *src, *dest;
     int target_is_directory = 0;
     DWORD res;
-    WIN32_FILE_ATTRIBUTE_DATA src_info;
 
     if (!check_CreateSymbolicLinkW())
     {
@@ -5351,16 +5350,6 @@
         return NULL;
     }
 
-    /* if src is a directory, ensure target_is_directory==1 */
-    if(
-        GetFileAttributesExW(
-            PyUnicode_AsUnicode(src), GetFileExInfoStandard, &src_info
-        ))
-    {
-        target_is_directory = target_is_directory ||
-            (src_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
-    }
-
     Py_BEGIN_ALLOW_THREADS
     res = Py_CreateSymbolicLinkW(
         PyUnicode_AsUnicode(dest),
