https://medium.com/@lukaspereyra8/using-callback-composition-to-avoid-javascripts-callback-hell-f34903cdbf8b