Thanks for the article, nice one! Here’s my stab at your pizza challenge :-)
I think your memoize-based solution is pretty interesting. The memoization call adds extra mental overhead though. So it’s IMHO better if you can avoid it.
I totally agree with you that you still need to understand promises even if using async/await — a/a will always be less flexible. That said, promises have problems too (see http://ideasintosoftware.com/coroutines-promises/).