I agree with Roland that having a Future[Unit] may lead to subtle bugs due to the value discarding mechanism. My favorite is mixing map and flatMap by mistake:
// this compiles just fine: map[T] is infered to be map[Unit], then Future { println("two"); Done } which is of type Future[Done] is discarded to satisfy map[Unit]
def compute: Future[Unit] = Future[Done] { println("one"); Done }.map( _ => Future { println("two"); Done } )
On the other hand:
// won't compile!
def compute: Future[Done] = Future[Done] { println("one"); Done }.map( _ => Future { println("two"); Done } )
Now, this could be a good reason for bringing this into the scala library?
Bruno