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];
}
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];
}
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 ] ; }
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
Gets a drive . Using the done parameter is recommended ( the filesystem will be initialized if it hasn t been )