proper q promise