Promise wrapper for request