private void OnStateChanged(CircuitBreakerStateChangedEventArgs args)
 {
     if (this.StateChanged != null)
     {
         this.StateChanged(this, args);
     }
 }
        private void Transitioning(CircuitBreakerStateInternal newState)
        {
            if (newState.GetType() == this.currentState.GetType())
            {
                return;
            }
            var previous = this.State;
            var args     = new CircuitBreakerStateChangedEventArgs
            {
                Previous = previous,
                Current  = newState
            };

            this.currentState = newState;
            this.OnStateChanged(args);
            this.DisposeState(previous);
        }