private void HandleAcceptComplete(IDuplexSessionChannel channel)
        {
            Exception exception = null;
            bool      flag      = false;

            this.inputChannelAcceptor.PrepareChannel(channel);
            IAsyncResult result = null;

            try
            {
                result = channel.BeginOpen(this.idleTimeout, this.onOpenInnerChannel, channel);
                flag   = true;
            }
            catch (CommunicationException exception2)
            {
                if (DiagnosticUtility.ShouldTraceInformation)
                {
                    DiagnosticUtility.ExceptionUtility.TraceHandledException(exception2, TraceEventType.Information);
                }
            }
            catch (TimeoutException exception3)
            {
                if (DiagnosticUtility.ShouldTraceInformation)
                {
                    DiagnosticUtility.ExceptionUtility.TraceHandledException(exception3, TraceEventType.Information);
                }
            }
            catch (Exception exception4)
            {
                if (Fx.IsFatal(exception4))
                {
                    throw;
                }
                exception = exception4;
            }
            finally
            {
                if (!flag && (channel != null))
                {
                    channel.Abort();
                }
            }
            if (flag)
            {
                if (result.CompletedSynchronously)
                {
                    this.CompleteOpen(channel, result);
                }
            }
            else if (exception != null)
            {
                this.inputChannelAcceptor.Enqueue(exception, null);
            }
        }
 protected override IAsyncResult OnBeginOpen(TimeSpan timeout, AsyncCallback callback, object state)
 {
     return(innerChannel.BeginOpen(timeout, callback, state));
 }