diff --git a/tests/io/TimeoutTest.cpp b/tests/io/TimeoutTest.cpp
index a46813c5cfcdb767dc6b81ae3b9a9dbc5ddaeb45..137e17ab6c56267e57019447acba654fb0700c00 100644
--- a/tests/io/TimeoutTest.cpp
+++ b/tests/io/TimeoutTest.cpp
@@ -7,6 +7,7 @@
 #include <cerrno>
 #include <cstdint>
 #include <cstring>
+#include <memory>
 
 #include "Common.hpp"
 #include "CountingPrivateSemaphore.hpp"
@@ -15,6 +16,7 @@
 #include "emper.hpp"
 #include "fixtures/assert.hpp"
 #include "io.hpp"
+#include "lib/LinuxVersion.hpp"
 
 using emper::io::ReadFuture;
 using emper::io::TimeoutWrapper;
@@ -122,7 +124,8 @@ void writeTest() {
 	ASSERT(res == -1);
 	// write requests can't be canceled when in execution so this
 	// will return as interupted
-	ASSERT(errno == EINTR);
+	const int err = errno;
+	ASSERT(err == EINTR || (EMPER_LINUX_GE("5.16.0") && err == ECANCELED));
 
 	emper::io::closeAndForget(efd);
 }