diff --git a/projects/RabbitMQ.Client/Impl/AutorecoveringConnection.cs b/projects/RabbitMQ.Client/Impl/AutorecoveringConnection.cs index 788ef088a..9349c79ef 100644 --- a/projects/RabbitMQ.Client/Impl/AutorecoveringConnection.cs +++ b/projects/RabbitMQ.Client/Impl/AutorecoveringConnection.cs @@ -96,8 +96,28 @@ internal static async ValueTask CreateAsync(Connection .ConfigureAwait(false); Connection innerConnection = new(config, fh); AutorecoveringConnection connection = new(config, endpoints, innerConnection); - await innerConnection.OpenAsync(cancellationToken) - .ConfigureAwait(false); + try + { + await innerConnection.OpenAsync(cancellationToken) + .ConfigureAwait(false); + } + catch + { + try + { + await connection.CloseAsync(Constants.InternalError, "FailedOpen", + InternalConstants.DefaultConnectionCloseTimeout, true, + cancellationToken).ConfigureAwait(false); + await connection.DisposeAsync() + .ConfigureAwait(false); + } + catch + { + } + + throw; + } + return connection; }