 {
   let queue: DispatchQueue
 
-  private var resolved: Result<Value, Error>?
   private var deferredState = UnsafeMutablePointer<AtomicInt>.allocate(capacity: 1)
 
   deinit
   {
     let s = CAtomicsLoad(deferredState, .acquire)
-    if !s.isResolved, let w = s.waiters
+    if s.isResolved
+    {
+      let r = s.result.assumingMemoryBound(to: Result<Value, Error>.self)
+      r.deinitialize(count: 1)
+      r.deallocate()
+    }
+    else if let w = s.waiters
     {
       deallocateWaiters(w.assumingMemoryBound(to: Waiter<Value>.self))
     }

  {
    var current = CAtomicsLoad(deferredState, .relaxed)
    repeat {
      if current & .executing != 0
      { // execution state has already been marked as begun
        return
      }

  fileprivate init(queue: DispatchQueue)
  {
    self.queue = queue
    CAtomicsInitialize(deferredState, .waiting)
  }

