public void TrySetException(Exception exception)
 {
     try
     {
         if (m_IsAsync)
         {
             m_Completion.TrySetException(exception);
         }
         else
         {
             m_Exception = exception;
         }
     }
     finally
     {
         m_Status |= RedisAsyncTaskStatus.Failed;
         Pulse();
     }
 }
 public void TrySetCompleted(RedisResult data)
 {
     try
     {
         if (m_IsAsync)
         {
             m_Completion.TrySetResult(data);
         }
         else
         {
             m_Result = data;
         }
     }
     finally
     {
         m_Status |= RedisAsyncTaskStatus.Completed;
         Pulse();
     }
 }
        public void TrySetCanceled()
        {
            try
            {
                if (m_IsAsync)
                {
                    var tcs  = m_Completion;
                    var task = tcs.Task;

                    if (!IsTaskCompletionSourceCompleted())
                    {
                        tcs.TrySetCanceled();
                    }
                }
            }
            finally
            {
                m_Status |= RedisAsyncTaskStatus.Canceled;
                Pulse();
            }
        }