in src/NMS.AMQP/NmsConnection.cs [451:493]
private async Task CreateNmsConnectionInternal(bool sync = true)
{
if (connected || closed)
{
return;
}
var syncLock = sync ? syncRoot.Lock() : await syncRoot.LockAsync();
using(syncLock)
{
if (closed || connected)
{
return;
}
try
{
var configureTask = provider.Connect(ConnectionInfo).Await();
if (sync)
configureTask.GetAwaiter().GetResult();
else
await configureTask;
connected.Set(true);
}
catch (Exception e)
{
try
{
if (sync)
provider.Close();
else
await provider.CloseAsync().Await();
}
catch
{
// ignored
}
throw NMSExceptionSupport.Create(e);
}
}
}