make request hooks useful with promises