Promises go back several years in Java. Any use of asynchronous functions with callbacks is basically a Promise.
I don't think there's as much a need for it in Java because I'm less likely to want to write defensive code in that way outside of the browser.
It looks like Play supplies F.Promise, which provides the same functionality with a different API. I do like the simplicity of the API in the JS promises. The something.transform(good, bad, progress) is very easy to understand from the start.
Could you elaborate on how it's defensive?