It's likely because in jquery-ujs, we set a slight timeout and then re-enable the form elements if the `ajax:aborted:file` handler returns false (in order to put everything back in its original state, allowing whatever handler to do whatever it needs to do at that point).

From jquery-ujs source:

```js
        if (nonBlankFileInputs) {
          // slight timeout so that the submit button gets properly serialized
          // (make it easy for event handler to serialize form without disabled values)
          setTimeout(function(){ rails.disableFormElements(form); }, 13);
          var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);

          // re-enable form elements if event bindings return false (canceling normal form submission)
          if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }

          return aborted;
        }
```

So, instead of above, try using this line instead:

```js
setTimeout(function(){ rails.disableFormElements(form); }, 20);
```