         Promise.reject(new hinoki.NotFoundError(path))
         cacheTarget
       )
+
+    hinoki.debug? {
+      event: 'sourceReturnedFactory'
+      path: path
+      factory: factory
+    }
 
     # we've got a factory.
     # lets make a value

    if helfer.isError(result)
      return Promise.reject new hinoki.ErrorInFactory path, factoryFunction, result
    if helfer.isThenable result
      return result.catch (rejection) ->
        Promise.reject new hinoki.PromiseRejectedError path, factoryFunction, rejection
    return Promise.resolve result

  hinoki.callFactoryObjectArray = (path, factoryObject, dependenciesObject) ->

        if helfer.isThenable valueOrPromise
          # if the value is already being constructed
          # wait for that instead of starting a second construction.
          hinoki.debug? {
            event: 'lifetimeHasPromise'
            path: path
            promise: valueOrPromise
            lifetime: lifetimes[valueIndex]
          }
          valueOrPromise
        else
          hinoki.debug? {
            event: 'lifetimeHasValue'
            path: path
            value: valueOrPromise
            lifetime: lifetimes[valueIndex]
          }
          Promise.resolve valueOrPromise
      return new hinoki.PromiseAndCacheTarget promise, valueIndex

