Add TakeUntil operator which will return values until another promise is triggered, also add Promise.delay() to create a Promise<Void> that resolves after the timeout is completed