Mapuj wyjątek nieudanej przyszłości

Jaki jest najczystszy sposóbmap Exception nieudanegoFuture w scali?

Powiedz, że mam:

import scala.concurrent._
import scala.concurrent.ExecutionContext.Implicits.global

val f = Future { 
  if(math.random < 0.5) 1 else throw new Exception("Oh no") 
}

Jeśli przyszłość się powiedzie1, Chciałbym to zachować, ale jeśli się nie uda, chciałbym zmienićException na innyException.

Najlepsze, co mogłem wymyślić, to transformacja, która jednak wymaga ode mnie niepotrzebnej funkcji w przypadku sukcesu:

val f2 = f.transform(s => s, cause => new Exception("Something went wrong", cause))

Czy jest jakiś powód, dla którego nie mamapFailure(PartialFunction[Throwable,Throwable])?

questionAnswers(2)

yourAnswerToTheQuestion