async Task CompleteAcceptAsync()

in src/Microsoft.Azure.Relay/HybridConnectionListener.cs [539:572]


        async Task CompleteAcceptAsync(RelayedHttpListenerContext listenerContext, Uri rendezvousUri, bool shouldAccept)
        {
            try
            {
                if (shouldAccept)
                {
                    var webSocketStream = await listenerContext.AcceptAsync(rendezvousUri).ConfigureAwait(false);
                    lock (this.ThisLock)
                    {
                        if (this.closeCalled)
                        {
                            RelayEventSource.Log.RelayListenerRendezvousFailed(this, listenerContext.TrackingContext.TrackingId, SR.ObjectClosedOrAborted);
                            return;
                        }

                        this.connectionInputQueue.EnqueueAndDispatch(webSocketStream, null, canDispatchOnThisThread: false);
                    }
                }
                else
                {
                    RelayEventSource.Log.RelayListenerRendezvousRejected(
                        listenerContext.TrackingContext, listenerContext.Response.StatusCode, listenerContext.Response.StatusDescription);
                    await listenerContext.RejectAsync(rendezvousUri).ConfigureAwait(false);
                }
            }
            catch (Exception exception) when (!Fx.IsFatal(exception))
            {
                RelayEventSource.Log.RelayListenerRendezvousFailed(this, listenerContext.TrackingContext.TrackingId, exception);
            }
            finally
            {
                RelayEventSource.Log.RelayListenerRendezvousStop();
            }
        }