docs: function(newState) {
          _state = newState;
          var invalidSequence = false;
          switch (_state) {
            case 'Attempt':
              if (_previousState !== 'Initial') {
                invalidSequence = true;
              }
              startAttemptPings();
              break;
            case 'Success':
              if (_previousState !== 'Attempt') {
                invalidSequence = true;
              }
              stopAttemptPings();
              break;
            case 'Failure':
              if (_previousState !== 'Attempt') {
                invalidSequence = true;
              }
              stopAttemptPings();
              break;
          }
          if (invalidSequence) {
            var data = options ? OT.$.clone(options) : {};
            data.action = 'Internal Error';
            data.variation = 'Non-fatal';
            data.payload = {
              debug: 'Invalid sequence: ' + options.action + ' ' +
                _previousState + ' -> ' + _state
            };
            OT.analytics.logEvent(data);
          }
        }