I wasn't able to find a bug for this.
Core has the server part of the upload API (including handling stashing, etc.). However, the clientside part is in UploadWizard.
This should be moved to core, at the correct abstraction level (promises, etc.), then UploadWizard should use that.
From T103397:
This should come with a proof-of-concept gadget that can be used to test the new API.
Version: 1.23.0
Severity: enhancement
See Also:
https://bugzilla.wikimedia.org/show_bug.cgi?id=54724
https://bugzilla.wikimedia.org/show_bug.cgi?id=60002