So, the first thing we need to do is make the entire system compatible with the Python execution model, ie no callbacks. As part of this it just so happens that sockets become synchronous as well.
Once this is done we have a solid (and conventional, not forced upon us by the vendor) foundation to work from. Then we can build the Python way of doing async IO if needed using the asyncio framework (and perhaps the new async/await keywords).
And for people who want to solve C1M/100/100 problem ("Serve one million clients on a 100MHz device with 100KB of RAM", pun at https://en.wikipedia.org/wiki/C10k_problem), up to going to callback-based API, we may offer that later, but it will be at least based on open and more or less known lwIP API, not on a proprietary vendor shim.
100% it is a downgrade. Every experienced developer knows the async model is more performant, at the cost of complexity. My micropython fork is super quick and super stable, it's just not easy to use for beginners. For the ESP micropython port to succeed they need to create groundswell of people using the more compatible APIs. Until now, with the cost of the board subsidising the development there has not been much motivation to even put even posted bug fixes into the port. Using the kickstarter and maybe more community support will maybe bring the ESP port up to a first class citizen.
Personally, my port is a hell of a lot of fun to work with and async is a total win on this board.
This model is certainly more modern and works way better than a for loop
def hello(): print("hello")
esp.os_timer(callback=hello, period=1000)
But, it's not compatible.