testing the semi-async idea from http://kolodny.github.io/blog/blog/2014/06/26/semi-async-js/