code: function initializeService (service) {
      // if service is already being initialized then return existing promise
      if (defined(service.initializePromise)) {
          return service.initializePromise
      }
      // if service is already initialized then check if needs reinitialize
      if (defined(service.lastInitialized) && getTimeSeconds() - service.lastInitialized < service.reinitializeInterval) {
          return
      }
      // execute initialize - store promise on service instance
      service.initializePromise = service.module.initialize({
          session: {},
      })
      // set data once initialized
      .then(data => {
          // clear initialize promise so initialize can be retried
          service.initializePromise = undefined
          // set time in seconds that service was initialized
          service.lastInitialized = getTimeSeconds()
          // set data on module if defined
          if (defined(data)) {
              service.module.meta.data = data
          }
      })
      // catch any errors
      .catch(err => {
          // clear initialize promise so initialize can be retried
          service.initializePromise = undefined
          // log error
          console.error(service.error('initialize error', err))
      })
      // return promise that will be resolved once service initialized
      return service.initializePromise
  }
docs: @function initializeService
  
  initialize or reinitialize service
  
  @param {ImmutableCoreService} service
  
  @returns {Promise}