trying to understand node.js callback scheme

function load_file_contents(path, callback) {
    fs.open(path, 'r', function (err, f) {
        if (err) {
            callback(err);
            return;
        } else if (!f) {
            callback(make_error("invalid_handle",
                "bad file handle from fs.open"));
            return;
        }
        fs.fstat(f, function (err, stats) {
            if (err) {
                callback(err);
                return;
            }
            if (stats.isFile()) {
                var b = new Buffer(10000);
                fs.read(f, b, 0, 10000, null, function (err, br, buf) {
                    if (err) {
                        callback(err);
                        return;
                    }

                    fs.close(f, function (err) {
                        if (err) {
                            callback(err);
                            return;
                        }
                        callback(null, b.toString('utf8', 0, br));
                    });
                });
            } else {
                calback(make_error("not_file", "Can't load directory"));
                return;
            }
        });
    });
}


load_file_contents(
    "test.txt",
    function (err, contents) {
        if (err)
            console.log(err);
        else
            console.log(contents);
    }
);

In this code, I don't quite understand where does this "f" come from? after "fs.open()", there is a line

" } else if (!f) {"

what does this mean, where does this f comefrom?

f is the file descriptor that is passed to fs.open()'s callback if the file was able to be opened.

 else if (!f) {
     callback(make_error("invalid_handle",
         "bad file handle from fs.open"));
     return;
 }

is checking if the file descriptor is falsy (presumably it's checking if it's null or undefined) and calling the function's own callback with an error.