THRIFT-2354 Connection errors can lead to case_clause exceptions

Patch: Anthony Molinaro
diff --git a/lib/erl/src/thrift_binary_protocol.erl b/lib/erl/src/thrift_binary_protocol.erl
index 800fd8e..85abb62 100644
--- a/lib/erl/src/thrift_binary_protocol.erl
+++ b/lib/erl/src/thrift_binary_protocol.erl
@@ -333,11 +333,15 @@
 new_protocol_factory(TransportFactory, Options) ->
     ParsedOpts = parse_factory_options(Options, #tbp_opts{}),
     F = fun() ->
-                {ok, Transport} = TransportFactory(),
-                thrift_binary_protocol:new(
-                  Transport,
-                  [{strict_read,  ParsedOpts#tbp_opts.strict_read},
-                   {strict_write, ParsedOpts#tbp_opts.strict_write}])
+               case TransportFactory() of
+                    {ok, Transport} ->
+                        thrift_binary_protocol:new(
+                            Transport,
+                            [{strict_read,  ParsedOpts#tbp_opts.strict_read},
+                             {strict_write, ParsedOpts#tbp_opts.strict_write}]);
+                    {error, Error} ->
+                        {error, Error}
+                end
         end,
     {ok, F}.