diff --git a/lib/connection.js b/lib/connection.js index 5f3bed3a..22a73332 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -178,8 +178,7 @@ C.open = function(allFields, openCallback0) { function send(Method) { // This can throw an exception if there's some problem with the // options; e.g., something is a string instead of a number. - try { self.sendMethod(0, Method, tunedOptions); } - catch (err) { bail(err); } + self.sendMethod(0, Method, tunedOptions); } function negotiate(server, desired) { @@ -205,7 +204,12 @@ C.open = function(allFields, openCallback0) { return; } self.serverProperties = start.fields.serverProperties; - send(defs.ConnectionStartOk); + try { + send(defs.ConnectionStartOk); + } catch (err) { + bail(err); + return; + } wait(afterStartOk); } @@ -227,8 +231,13 @@ C.open = function(allFields, openCallback0) { negotiate(fields.channelMax, allFields.channelMax); tunedOptions.heartbeat = negotiate(fields.heartbeat, allFields.heartbeat); - send(defs.ConnectionTuneOk); - send(defs.ConnectionOpen); + try { + send(defs.ConnectionTuneOk); + send(defs.ConnectionOpen); + } catch (err) { + bail(err); + return; + } expect(defs.ConnectionOpenOk, onOpenOk); break; default: