diff --git a/src/lua/bsdsocket.lua b/src/lua/bsdsocket.lua
index 25dd1f6704b747632c674e7579e7ab0265f52731..c036daf096df722bf79c4ae6d5835e752b4da1cb 100644
--- a/src/lua/bsdsocket.lua
+++ b/src/lua/bsdsocket.lua
@@ -947,9 +947,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