private static void FinishConnect(AsyncConnectState data) { try { Interlocked.Decrement(ref _halfOpens); data.Callback(true, 0, data.State); } catch { data.Callback(false, 0, data.State); } finally { ConnectCache.Enqueue(data); } }