diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua
index bfab039e3a6c4a0859545da2869ef4e46c73d776..ccb579ba5de8d8e9d0045f604c1aec9b51ff1a1a 100644
--- a/src/lua/bsdsocket.lua
+++ b/src/lua/bsdsocket.lua
@@ -942,9 +942,9 @@ local function tcp_server_remote(list, prepare, handler)
 
         local ok = false
         if s ~= nil then
+            local backlog = prepare(s)
             if s:bind(addr.host, addr.port) then
-                local prepared, backlog = pcall(prepare, s)
-                if prepared and s:listen(backlog) then
+                if s:listen(backlog) then
                     ok = true
                 end
             end