https://aruva.medium.com/a-comprehensive-introduction-to-asynchronous-programming-in-java-promises-callbacks-and-futures-747ddfaf3c4b