let's say you have more than one future:
findAirline: AirlineCode => Future[Option[Airline]]
getFlightsForToday: Airline => Future[Seq[Flight]]
findAvailable: Seq[Flight] => Constraints => Future[Option[Flight]
compose them so that I get: findFlight: AirlineCode => Constraints => Future[Flight]
I don't want `Future[Option[Flight]]` since Future has own error handling (using Try). No cheating by using scalaz monad transformer.