diff --git a/ext/net/lib.rs b/ext/net/lib.rs
index 3b6c05282b..c0f94ce1c7 100644
--- a/ext/net/lib.rs
+++ b/ext/net/lib.rs
@@ -158,14 +158,28 @@ mod ops_unix {
macro_rules! stub_op {
($name:ident) => {
#[op2(fast)]
- pub fn $name() {
- panic!("Unsupported on non-unix platforms")
+ pub fn $name() -> Result<(), std::io::Error> {
+ let error_msg = format!(
+ "Operation `{:?}` not supported on non-unix platforms.",
+ stringify!($name)
+ );
+ Err(std::io::Error::new(
+ std::io::ErrorKind::Unsupported,
+ error_msg,
+ ))
}
};
($name:ident
) => {
#[op2(fast)]
- pub fn $name() {
- panic!("Unsupported on non-unix platforms")
+ pub fn $name() -> Result<(), std::io::Error> {
+ let error_msg = format!(
+ "Operation `{:?}` not supported on non-unix platforms.",
+ stringify!($name)
+ );
+ Err(std::io::Error::new(
+ std::io::ErrorKind::Unsupported,
+ error_msg,
+ ))
}
};
}
diff --git a/tests/unit/serve_test.ts b/tests/unit/serve_test.ts
index 3636670661..4239221be3 100644
--- a/tests/unit/serve_test.ts
+++ b/tests/unit/serve_test.ts
@@ -4034,3 +4034,28 @@ Deno.test(
await server.finished;
},
);
+
+Deno.test({
+ name: "HTTP Server test (error on non-unix platform)",
+ ignore: Deno.build.os !== "windows",
+}, async () => {
+ await assertRejects(
+ async () => {
+ const ac = new AbortController();
+ const server = Deno.serve({
+ path: "path/to/socket",
+ handler: (_req) => new Response("Hello, world"),
+ signal: ac.signal,
+ onListen({ path: _path }) {
+ console.log(`Server started at ${_path}`);
+ },
+ });
+ server.finished.then(() => console.log("Server closed"));
+ console.log("Closing server...");
+ ac.abort();
+ await new Promise((resolve) => setTimeout(resolve, 100)); // Example of awaiting something
+ },
+ Error,
+ 'Operation `"op_net_listen_unix"` not supported on non-unix platforms.',
+ );
+});