function setTopics( slug, topics ) {
		if ( !isString( slug ) ) {
			throw new TypeError( format( 'invalid argument. Repository slug must be a string. Value: `%s`.', slug ) );
		}
		if ( slug.split( '/' ).length !== 2 ) {
			throw new Error( format( 'invalid argument. Repository slug must consist of an owner and a repository (e.g., "stdlib-js/utils"). Value: `%s`.', slug ) );
		}
		if ( !isStringArray( topics ) ) {
			throw new TypeError( format( 'invalid argument. Topics argument must be an array of strings. Value: `%s`.', topics ) );
		}
		query( slug, topics, opts, done );
		/**
		* Callback invoked after receiving an API response.
		*
		* @private
		* @param {(Error|null)} error - error object
		* @param {Object} data - response data
		* @param {Object} info - response info
		* @returns {void}
		*/
		function done( error, data, info ) {
			error = error || null;
			data = data || null;
			info = info || null;
			clbk( error, data, info );
		}
	}
Replaces all the topics of a repository.

@private
@param {string} slug - repository slug
@param {Array<string>} topics - array of topics
@throws {TypeError} repository slug must be a string
@throws {Error} repository slug must consist of an `owner` and a `repository`
@throws {TypeError} topics must be an array of strings
@returns {void}