Scala-JS has been making very fast progress lately, the 0.1 release wasn't that long ago. I'm excited to see where it goes and I think there's room for some very cool integrations with Play.
We've managed to get a hello world app down to about 300kb; most of that is the standard library, and even a several-1000-LOC game like [roll](http://lihaoyi.github.io/roll/) clocks in at about 340kb. Getting this number down is WIP.
The title mentions Futures & Promises, but the link is directly to the GitHub project without any further information about those concurrency constructs.
I'm curious if they managed to implement the blocking operations of Future [1], such as the "result" method. And, if so, did they accomplish that using the same Continuation Passing Style transform that Scala's Delimited Continuations [2] plugin uses, or some other means?
It uses normal Scala `Future`s. You get two `ExecutionContext`s: `queued` and `runNow`. You can't block on a `Future`. That covers just about all the ScalaJS specific stuff, the rest is plain Scala.
Take a look at [Scala.Rx](https://github.com/lihaoyi/scala.rx) or [uTest](https://github.com/lihaoyi/utest) if you want to see code examples of how `Future`s are used in ScalaJS, but I think you'll be disappointed: it's exactly the same code that gets run on Scala-JVM!
> it's exactly the same code that gets run on Scala-JVM
That can't be exactly true, since "Awaitable" [1] doesn't appear anywhere in the scala-js codebase. So I guess as long as you don't mention that trait by name, or attempt to block on a future, then your effectively duck-typed Scala-JVM code will be able to run unmodified on Scala-JS.