Using promises instead of CountDownLatch. #6, #5