code: function resolveProvide(obj, override) {
      var provide = override || obj.$provide;
  
      if(isString(provide)) {
        return provideName(obj, provide);
      }
  
      if(isObject(provide)) {
        if (isString(provide.promise)) {
          return providePromise(obj, provide.promise);
        } else if (isString(provide.provide)) {
          return provideName(obj, provide.provide);
        }
      }
    }
docs: resolve the type of promise and the name given the underlying object and any overrides
  @private
  @param {*} obj
  @param {string|object} [override] - specify any of the overides