function metadataGetObject(bucketName, objectKey, versionId, cachedDocuments, log, cb) {
    // versionId may be 'null', which asks metadata to fetch the null key specifically
    const options = { versionId, getDeleteMarker: true };
    if (cachedDocuments && cachedDocuments[objectKey]) {
        return cb(null, cachedDocuments[objectKey]);
    }
    return metadata.getObjectMD(bucketName, objectKey, options, log,
        (err, objMD) => {
            if (err) {
                if (err.is && err.is.NoSuchKey && versionId === 'null') {
                    return getNullVersionFromMaster(bucketName, objectKey, log, cb);
                }
                if (err.is && err.is.NoSuchKey) {
                    log.debug('object does not exist in metadata');
                    return cb();
                }
                log.debug('err getting object MD from metadata', { error: err });
                return cb(err);
            }
            return cb(null, objMD);
        });
}
metadataGetObject - retrieves specified object or version from metadata
@param {string} bucketName - name of bucket
@param {string} objectKey - name of object key
@param {string} [versionId] - version of object to retrieve
@param {object} cachedDocuments - cached version of the documents used for
                                  abstraction purposes
@param {RequestLogger} log - request logger
@param {function} cb - callback
@return {undefined} - and call callback with err, bucket md and object md