you can do all that in pure JS. just use a promises library.