     source = nil
     determined = nil
     waiters = AtomicOptionalMutableRawPointer(nil)
-    stateid = AtomicInt8(1)
+    deferredState = AtomicInt(.executing)
 
     queue.async {
       do {

  @discardableResult
  fileprivate func determine(_ outcome: Outcome<Value>) -> Bool
  {
    guard stateid.load(.relaxed) != 2 else { return false }
    // no other call has succeeded yet
    guard stateid.swap(2, .relaxed) != 2 else { return false }
    // this thread has exclusive access

    determined = outcome

  /// Whether this `DeferredState` is determined.
  /// returns: `true` iff this `DeferredState` represents one of the states where it is determined
  public var isDetermined: Bool { return self == .succeeded || self == .errored }
}

private extension Int
{
  static let waiting =     0x0
  static let executing =   0x1
  static let determining = 0x3
  static let determined =  0x7

  var isDetermined: Bool { return self == .determined }
  var state: Int { return self & .determining }
}

extension UnsafeMutableRawPointer
