add a YPromise.queue() function