Better use of q promises to only have one error call