diff --git a/unix/file.c b/unix/file.c
index 056a7b6e84dd16cfaf3d16a12ede900243759605..7cf0a519322991d33b31c024ba09c0fb4632ac98 100644
--- a/unix/file.c
+++ b/unix/file.c
@@ -39,6 +39,10 @@
 #include "runtime.h"
 #include "stream.h"
 
+#ifdef _WIN32
+#define fsync _commit
+#endif
+
 typedef struct _mp_obj_fdfile_t {
     mp_obj_base_t base;
     int fd;
@@ -83,12 +87,9 @@ STATIC mp_int_t fdfile_write(mp_obj_t o_in, const void *buf, mp_uint_t size, int
 }
 
 STATIC mp_obj_t fdfile_flush(mp_obj_t self_in) {
-#ifndef _WIN32
     mp_obj_fdfile_t *self = self_in;
+    check_fd_is_open(self);
     fsync(self->fd);
-#else
-    //TODO
-#endif
     return mp_const_none;
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(fdfile_flush_obj, fdfile_flush);