- fix for SF 3057499
diff --git a/pyserial/CHANGES.txt b/pyserial/CHANGES.txt
index c4b2cca..b50e4a8 100644
--- a/pyserial/CHANGES.txt
+++ b/pyserial/CHANGES.txt
@@ -151,7 +151,7 @@
   This dictionary can be used to convert parity constants to meaningful
   strings.
 - Each Serial class and instance has a list of supported values:
-  ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``
+  ``BAUDRATES``, ``BYTESIZES``, ``PARITIES``, ``STOPBITS``Ggg
   (i.e. ``serial.Serial.BAUDRATES or s = serial.Serial; s.BAUDRATES``)
   these values can be used to fill in value sin GUI dialogs etc.
 - Creating a ``Serial()`` object without port spec returns an unconfigured,
@@ -413,3 +413,8 @@
 
 - [SF 3093882] calling open() on an already open port now raises an exception
 - [SF 3245627] connection-lost let rfc2217 hangs in closed loop
+
+Bugfixes (win32):
+
+- [SF 3057499] writeTimeoutError when write Timeout is 0
+
diff --git a/pyserial/serial/serialwin32.py b/pyserial/serial/serialwin32.py
index 9fca6e2..c510478 100644
--- a/pyserial/serial/serialwin32.py
+++ b/pyserial/serial/serialwin32.py
@@ -255,11 +255,12 @@
             err = win32.WriteFile(self.hComPort, data, len(data), ctypes.byref(n), self._overlappedWrite)
             if not err and win32.GetLastError() != win32.ERROR_IO_PENDING:
                 raise SerialException("WriteFile failed (%s)" % ctypes.WinError())
-            # Wait for the write to complete.
-            #~ win32.WaitForSingleObject(self._overlappedWrite.hEvent, win32.INFINITE)
-            err = win32.GetOverlappedResult(self.hComPort, self._overlappedWrite, ctypes.byref(n), True)
-            if n.value != len(data):
-                raise writeTimeoutError
+            if self._writeTimeout != 0: # if blocking (None) or w/ write timeout (>0)
+                # Wait for the write to complete.
+                #~ win32.WaitForSingleObject(self._overlappedWrite.hEvent, win32.INFINITE)
+                err = win32.GetOverlappedResult(self.hComPort, self._overlappedWrite, ctypes.byref(n), True)
+                if n.value != len(data):
+                    raise writeTimeoutError
             return n.value
         else:
             return 0