perhaps use `scala.concurrent.duration.Deadline`?