More for you guys - I lifted this interface mostly from Scala's Future. 

I shall remove the comment now that you've seen it.