https://www.andalan.eu.org/2015/12/go-await.html