Given two `Future[Option[Int]]`:

```
scala> val x: Future[Option[Int]] = Future.successful { None }
x: scala.concurrent.Future[Option[Int]] = scala.concurrent.impl.Promise$KeptPromise@39dcf4b0

scala> val y: Future[Option[Int]] = Future.successful { Some(55) }
y: scala.concurrent.Future[Option[Int]] = scala.concurrent.impl.Promise$KeptPromise@7ef2d7a6

```

Is there a cleaner way to do the following?

```
scala> def f[A](x: Future[Option[A]], 
                y: Future[Option[A]]): Future[Option[A]] = x.flatMap( _ match {
     |   case None => y
     |   case Some(_) => x
     | })
f: [A](x: scala.concurrent.Future[Option[A]], y: scala.concurrent.Future[Option[A]])scala.concurrent.Future[Option[A]]

```

I thought of using an Alternative, but I'm not sure of such an implementation of `scala.concurrent.Future`:

```
>import Control.Applicative
> Nothing <|> Just 55
Just 55

```