private static void OnOpenComplete(IAsyncResult result)
            {
                if (result.CompletedSynchronously)
                {
                    return;
                }
                Exception exception = null;

                RefcountedCommunicationObject.OpenAsyncResult asyncState = (RefcountedCommunicationObject.OpenAsyncResult)result.AsyncState;
                try
                {
                    asyncState.HandleOpenComplete(result);
                }
                catch (Exception exception2)
                {
                    Exception exception1 = exception2;
                    if (Fx.IsFatal(exception1))
                    {
                        throw;
                    }
                    exception = exception1;
                    if (Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.ShouldTraceWarning)
                    {
                        DiagnosticTrace diagnosticTrace = Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.DiagnosticTrace;
                        string          traceCodeCommunicationObjectOpenFailed = Resources.TraceCodeCommunicationObjectOpenFailed;
                        object[]        str = new object[] { asyncState.communicationObject.GetCommunicationObjectType().ToString() };
                        diagnosticTrace.TraceEvent(TraceEventType.Warning, TraceCode.CommunicationObjectOpenFailed, Microsoft.ServiceBus.SR.GetString(traceCodeCommunicationObjectOpenFailed, str), null, null, asyncState);
                    }
                    asyncState.communicationObject.Fault();
                }
                asyncState.Complete(false, exception);
            }