 
     var nextItem = oldHead
     while let currentItem = nextItem as? SubscribedPromiseState<Success> {
-      currentItem.handler?.handle(completion, from: originalExecutor)
-      currentItem.releaseOwner()
+      currentItem.handle(completion, from: originalExecutor)
       nextItem = currentItem.next
     }
     _releasePool.drain()

  typealias Value = Fallible<Success>
  typealias Handler = PromiseHandler<Success>
  
  weak private(set) var handler: Handler?
  let next: SubscribedPromiseState<Success>?

  init(handler: Handler, next: SubscribedPromiseState<Success>?) {

    self.next = next
  }

  override func handle(_ value: Fallible<Success>, from originalExecutor: Executor?) {
    let handler = self.handler
    handler?.handle(value, from: originalExecutor)
    handler?.releaseOwner()
  }
}

