better error handling along promise chains
Also, easier to read?