chained promises for asyncronous requests needing ordered evaluation, flattened rather than nested