docs: async function retrieveDescriptor(descriptor) {
    if (isPlainObject(descriptor)) {
      return cloneDeep(descriptor)
    }
    if (isString(descriptor)) {
  
      // Remote
      if (isRemotePath(descriptor)) {
        try {
          const response = await axios.get(descriptor)
          return response.data
        } catch (error) {
          const message = `Can not retrieve remote descriptor "${descriptor}"`
          throw new DataPackageError(message)
        }
  
      // Local
      } else {
        if (config.IS_BROWSER) {
          const message = `Local descriptor "${descriptor}" in browser is not supported`
          throw new DataPackageError(message)
        }
        try {
          // TODO: rebase on promisified fs.readFile (async)
          const contents = fs.readFileSync(descriptor, 'utf-8')
          return JSON.parse(contents)
        } catch (error) {
          const message = `Can not retrieve local descriptor "${descriptor}"`
          throw new DataPackageError(message)
        }
      }
  
    }
    throw new DataPackageError('Descriptor must be String or Object')
  }