Use ES6 promises and remove Q dependency