implicit def twitter2ScalaFuture[A]()

in bijection-util/src/main/scala/com/twitter/bijection/twitter_util/UtilBijections.scala [74:96]


  implicit def twitter2ScalaFuture[A](implicit
      executor: ExecutionContext
  ): Bijection[TwitterFuture[A], ScalaFuture[A]] = {
    new AbstractBijection[TwitterFuture[A], ScalaFuture[A]] {
      override def apply(f: TwitterFuture[A]): ScalaFuture[A] = {
        val p = ScalaPromise[A]()
        f.respond {
          case Return(value)    => p success value
          case Throw(exception) => p failure exception
        }
        p.future
      }

      override def invert(f: ScalaFuture[A]): TwitterFuture[A] = {
        val p = new TwitterPromise[A]()
        f.onComplete {
          case Success(value)     => p.setValue(value)
          case Failure(exception) => p.setException(exception)
        }
        p
      }
    }
  }