/// <inheritdoc /> public override void Write(IChannelHandlerContext context, object message, IPromise promise) { if (!(message is IHttpRequest request)) { _ = context.WriteAsync(message, promise); return; } if (this.upgradeRequested) { Util.SafeSetFailure(promise, ThrowHelper.GetInvalidOperationException_Attempting(), Logger); return; } this.upgradeRequested = true; this.SetUpgradeRequestHeaders(context, request); // Continue writing the request. _ = context.WriteAsync(message, promise); // Notify that the upgrade request was issued. _ = context.FireUserEventTriggered(UpgradeEvent.UpgradeIssued); // Now we wait for the next HTTP response to see if we switch protocols. }