lib/browser/crypto.js
function(buffer, callback) {
    if (supportsWorkers) {
        // We have a worker queue, push an item into it and start processing
        workerQueue.push({ buffer: buffer, callback: callback });
        nextMd5Task();
    } else {
        // We don't have any Web Worker support,
        // queue an MD5 operation on the next tick
        process.nextTick(function() {
            callback(null, md5.ArrayBuffer.hash(buffer));
        });
    }
}
function(buffer, callback) {
    if (supportsWorkers) {
        // We have a worker queue, push an item into it and start processing
        workerQueue.push({ buffer: buffer, callback: callback });
        nextMd5Task();
    } else {
        // We don't have any Web Worker support,
        // queue an MD5 operation on the next tick
        process.nextTick(function() {
            callback(null, md5.ArrayBuffer.hash(buffer));
        });
    }
}
function ( buffer , callback ) { if ( supportsWorkers ) { // We have a worker queue, push an item into it and start processing workerQueue . push ( { buffer : buffer , callback : callback } ) ; nextMd5Task ( ) ; } else { // We don't have any Web Worker support, // queue an MD5 operation on the next tick process . nextTick ( function ( ) { callback ( null , md5 . ArrayBuffer . hash ( buffer ) ) ; } ) ; } }
Add a new MD5 task to the queue

@param {ArrayBuffer} buffer - Buffer containing the file data
@param {Function} callback  - Callback to run when the MD5 task has been completed
Add a new MD5 task to the queue