diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index 0c0d681..3c302a4 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -2085,11 +2085,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.
@@ -2102,7 +2100,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 79e66fb..e78db48 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -500,7 +500,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"])
@@ -1131,7 +1136,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 91e6c55..601bc19 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -458,6 +458,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 61a0439..1797a2f 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -6551,7 +6551,6 @@
     wchar_t *wsrc, *wdest;
     int target_is_directory = 0;
     DWORD res;
-    WIN32_FILE_ATTRIBUTE_DATA src_info;
 
     if (!check_CreateSymbolicLinkW())
     {
@@ -6581,16 +6580,6 @@
     if (wsrc == NULL)
         goto error;
 
-    /* if src is a directory, ensure target_is_directory==1 */
-    if(
-        GetFileAttributesExW(
-            wsrc, GetFileExInfoStandard, &src_info
-        ))
-    {
-        target_is_directory = target_is_directory ||
-            (src_info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
-    }
-
     Py_BEGIN_ALLOW_THREADS
     res = Py_CreateSymbolicLinkW(wdest, wsrc, target_is_directory);
     Py_END_ALLOW_THREADS
