whole_func_string: function drive(name, done) {
      name = name.toLowerCase();
      done = done || function() { };
  
      if (allowedDrives.indexOf(name) === -1) return done(new Error("Unknown drive"));
      if (!fileContents) return initialize(function() { drive(name, done); });
  
      if (!fileContents[name]) fileContents[name] = {};
      if (!driveCache[name]) driveCache[name] = new Drive(name, fileContents[name]);
  
      done(driveCache[name]);
      return driveCache[name];
  }
func_code_string: function drive(name, done) {
      name = name.toLowerCase();
      done = done || function() { };
  
      if (allowedDrives.indexOf(name) === -1) return done(new Error("Unknown drive"));
      if (!fileContents) return initialize(function() { drive(name, done); });
  
      if (!fileContents[name]) fileContents[name] = {};
      if (!driveCache[name]) driveCache[name] = new Drive(name, fileContents[name]);
  
      done(driveCache[name]);
      return driveCache[name];
  }
func_documentation_string: Gets a drive. Using the 'done' parameter is recommended (the filesystem will be initialized if it hasn't been)
  
  @param {String} name The name of the drive
  @param {Function<Drive>?} done A callback to call when the drive is acquired
  @returns {Drive|undefined} The drive, or undefined if not yet initialized