protected override void DoProcessRequest(RedisAsyncRequest request, RedisSocketContext context) { var cancelRequest = true; try { if (Disposed) { return; } if (request.Send(context)) { if (Disposed) { return; } Interlocked.Exchange(ref m_CurrentContext, context); var receiveQ = m_ReceiveQ; if (receiveQ != null) { receiveQ.Enqueue(request); cancelRequest = false; m_ReceiveGate.Set(); } } } catch (Exception) { } finally { if (cancelRequest) { request.Cancel(); } } }