in util-core/src/main/scala/com/twitter/util/Promise.scala [840:862]
protected final def continue(wq: WaitQueue[A]): Unit =
if (wq ne WaitQueue.Empty)
state match {
case s: Transforming[A] =>
if (!cas(s, new Transforming(WaitQueue.merge(wq, s.waitq), s.other)))
continue(wq)
case waitq: WaitQueue[A] =>
if (!cas(waitq, WaitQueue.merge(wq, waitq)))
continue(wq)
case v: Try[A] /* Done */ => wq.runInScheduler(v)
case s: Interruptible[A] =>
if (!cas(s, new Interruptible(WaitQueue.merge(wq, s.waitq), s.handler, s.saved)))
continue(wq)
case p: Promise[A] /* Linked */ => p.continue(wq)
case s: Interrupted[A] =>
if (!cas(s, new Interrupted(WaitQueue.merge(wq, s.waitq), s.signal)))
continue(wq)
}