function clbk( error, completions ) {
		var autoCompletion;
		var i;

		// Check whether we encountered an error when generating completions...
		if ( error ) {
			debug( 'Encountered an error when generating completions.' );
			self._ostream.write( 'Error: couldn\'t generate tab completions' );

			// Resume the input stream:
			self._rli.resume();
			return;
		}
		// Remove empty completions:
		self._completionsList = [];
		for ( i = 0; i < completions[ 0 ].length; i++ ) {
			if ( !isEmptyString( completions[ 0 ][ i ] ) ) {
				self._completionsList.push( completions[ 0 ][ i ] );
			}
		}
		if ( self._completionsList.length === 0 ) {
			debug( 'No completions to display.' );

			// Resume the input stream:
			self._rli.resume();
			return;
		}
		self._completionPrefix = completions[ 1 ];

		// If we were already navigating, don't try to auto-complete as it's not a TAB trigger...
		if ( !self._isNavigating ) {
			// Resolve a common prefix from the completion results:
			autoCompletion = commonPrefix( self._completionsList ); // e.g., [ 'back', 'background', 'backward' ] => 'back'

			// If the completion candidates have a possible auto-completion (i.e., a common prefix longer than the input), auto-complete it...
			if ( autoCompletion !== '' && autoCompletion.length > self._completionPrefix.length ) {
				debug( 'Found an auto-completion candidate: %s', autoCompletion );

				// Clear the completion prefix:
				self._ostream.write( repeat( '\x08', self._completionPrefix.length ) );
				self._rli.line = self._rli.line.slice( 0, self._rli.cursor - self._completionPrefix.length ) + self._rli.line.slice( self._rli.cursor ); // eslint-disable-line max-len

				// Move the cursor to the start of completion prefix:
				self._rli.cursor -= self._completionPrefix.length;

				// Write the auto-completion string:
				self._rli.write( autoCompletion );

				// Resume the input stream:
				self._rli.resume();
				return;
			}
		}
		debug( 'No auto-completion candidate, displaying all possible completions.' );

		// Check if completions can be displayed...
		if ( !self._isDisplayable() ) {
			debug( 'TTY height too short. Unable to display completions. Exiting completion mode...' );
			self._rli.resume();
			return;
		}

		// Display completions:
		self._displayCompletions();
		self._isNavigating = true;

		// Resume the input stream:
		self._rli.resume();
	}
Callback invoked upon resolving potential completions.

@private
@param {(Error|null)} error - error object
@param {Array} completions - completion results
@returns {void}