Works with any backend npm install Zero dependencies
Retry with Backoff Strategy

Compare linear vs. exponential backoff strategies for failed upload retries.

(function() {
    var logEl = document.getElementById('log');
    function log(m) { var d = document.createElement('div'); d.className='pkg-log-entry'; d.textContent=m; logEl.appendChild(d); logEl.scrollTop=logEl.scrollHeight; }
    new MultipleUpload('#demo', {
        uploadUrl: '/api/upload',
        multiple: true,
        retries: 3,
        retryDelay: 1000,
        retryBackoff: 'exponential',
        onTaskRetry: function(task) {
            var delay = 1000 * Math.pow(2, task.retryCount - 1);
            log('Retry #' + task.retryCount + ' for ' + task.fileName + ' after ~' + delay + 'ms');
        },
        onTaskError: function(task, err) {
            log('Failed: ' + task.fileName + ' - ' + err);
        }
    });
})();