function resolve (nodeModules, parentTarget, isExplicit) {
	return this::mergeMap(([name, version]) => {
		progress.add()
		progress.report(`resolving ${name}@${version}`)
		log(`resolving ${name}@${version}`)

		return resolveLocal(nodeModules, parentTarget, name, version, isExplicit)
			::_catch((error) => {
				if (error.name !== 'LocalConflictError' && error.code !== 'ENOENT') {
					throw error
				}
				log(`failed to resolve ${name}@${version} from local ${parentTarget} via ${nodeModules}`)
				return resolveRemote(nodeModules, parentTarget, name, version, isExplicit)
			})
			::_finally(progress.complete)
	})
}
resolve an individual sub-dependency based on the parent's target and the
current working directory.
@param	{String} nodeModules - `node_modules` base directory.
@param	{String} parentTarget - target path used for determining the sub-
dependency's path.
@param	{Boolean} isExplicit - whether the install command asks for an explicit install.
@return {Obserable} - observable sequence of `package.json` root documents
wrapped into dependency objects representing the resolved sub-dependency.