whole_func_string: function use(name) {
    if (name === undefined) {
      if (queue.length === 0) {
        throw new Error('No algorithm installed.');
      }
      name = queue[queue.length - 1];
    } else if (typeof name !== 'string' || name === '') {
      throw new TypeError('The algorithm name must be an non-empty string.');
    }
  
    const hashFunc = funcs[name];
  
    if (!hashFunc) {
      throw new TypeError(`The ${name} algorithm is not installed`);
    }
  
    return hashFunc;
  }
func_code_string: function use(name) {
    if (name === undefined) {
      if (queue.length === 0) {
        throw new Error('No algorithm installed.');
      }
      name = queue[queue.length - 1];
    } else if (typeof name !== 'string' || name === '') {
      throw new TypeError('The algorithm name must be an non-empty string.');
    }
  
    const hashFunc = funcs[name];
  
    if (!hashFunc) {
      throw new TypeError(`The ${name} algorithm is not installed`);
    }
  
    return hashFunc;
  }
func_documentation_string: Selects manually which password hashing function to use.
  You can call hash and verify on the object returned.
  @public
  @param {string|undefined} name The name of the algorithm to use.
  @return {Object} The password hashing function object.