in bijection-util/src/main/scala/com/twitter/bijection/twitter_util/JavaFutureConverter.scala [78:93]
override def apply[T](javaFuture: JFuture[T]): Future[T] = {
val p = Promise[T]
lazy val task: TimerTask = timer.schedule(checkFrequency) {
if (javaFuture.isDone) {
p.updateIfEmpty(Try(javaFuture.get()))
task.cancel()
}
}
require(task != null)
p.setInterruptHandler { case NonFatal(e) =>
task.cancel()
p.updateIfEmpty(Throw(e))
javaFuture.cancel(mayInterruptIfRunning)
}
p
}