code: function() {
        var retrieveOnceDeferred = $.Deferred();
        var demographicsFetchSuccess = this.get('fetchSuccess');
        if (demographicsFetchSuccess) {
          retrieveOnceDeferred.resolve();
        } else if (demographicsFetchSuccess === false) {
          retrieveOnceDeferred.reject();
        } else {
          this.once('fetched', function() {
            var demographicsFetchSuccess = this.get('fetchSuccess');
            if (demographicsFetchSuccess) {
              retrieveOnceDeferred.resolve();
            } else {
              retrieveOnceDeferred.reject();
            }
          });
        }
        return retrieveOnceDeferred.promise();
      }
docs: This is a good way to have something be called after at least one retrieve (pull or fetch) has completed.
  This is especially useful if you don't care if the fetch has already happen you just want to do something once
  the data is loaded.
  
  This can also be done purely by listening for the 'fetched' event, but you might miss the event if it is fired
  before you start listening.  This gives a structure for handling that case so that your methods are called
  if the event is fired and if it is not fired.
  
  This also gives the ability to distinguish between a successful and failed fetch easily using the promises
  resolve/reject handlers.
  
  Usage:
  
  someDataBehavior.retrieveOncePromise()
  .then(view.doSomethingWithTheData, view.handleFiledFetch);
  
  @method retrieveOncePromise
  @return {jQuery.Promise} that resolves when the data is successfully fetched and rejects when the fetch fails.