And all of this due to the mistaken design decision to stick with the obsolete readiness-based model instead of going with the superior completion-based model.
(You can build a readiness-based API on top of a completion-based API, but not the other way around.)