There's absolutely nothing about this that would benefit from having promises - none of the operations performed are blocking. It's constraint solving, not I/O.
The same goal could also be achieved with multiple threads (webworkers for example). But the promises and async/await syntax is more convenient.