function loadNewData(languageKey) {
        var promise = loadAsync(languageKey);
        //update the load promise cache for this language
        langPromises[languageKey] = promise;
        //register a data handler for the promise
        promise.then(function (data) {
            //clear the cache for this language
            $translationTable[languageKey] = {};
            //add the new data for this language
            translations(languageKey, data.table);
            //track that we updated this language
            updatedLanguages[languageKey] = true;
          },
          //handle rejection to appease the $q validation
          angular.noop);
        return promise;
      }
@ngdoc method
@name $provide#factory
@description

Register a **service factory**, which will be called to return the service instance.
This is short for registering a service where its provider consists of only a `$get` property,
which is the given service factory function.
You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to
configure your service in a provider.

@param {string} name The name of the instance.
@param {Function|Array.<string|Function>} $getFn The injectable $getFn for the instance creation.
                     Internally this is a short hand for `$provide.provider(name, {$get: $getFn})`.
@returns {Object} registered provider instance

@example
Here is an example of registering a service
```js
  $provide.factory('ping', ['$http', function($http) {
    return function ping() {
      return $http.send('/ping');
    };
  }]);
```
You would then inject and use this service like this:
```js
  someModule.controller('Ctrl', ['ping', function(ping) {
    ping();
  }]);
```