     resolved.initialize(to: result)
 
     let final = Int(bitPattern: resolved) | .resolved
-    var current = CAtomicsLoad(deferredState, .acquire)
+    var current = CAtomicsLoad(deferredState, .relaxed)
     repeat {
       if current.state == .resolved
       {

      // The atomic compare-and-swap operation uses memory order `.acqrel`.
      // "release" ordering ensures visibility of changes to `resolvedPointer(from:)` above to another thread.
      // "acquire" ordering ensures visibility of changes to `waiterQueue(from:)` below from another thread.
    } while !CAtomicsCompareAndExchange(deferredState, &current, final, .weak, .acqrel, .acquire)

    precondition(current.isResolved == false)
    let waiters = waiterQueue(from: current)


  /// Get a pointer to the first `Waiter` for an unresolved `Deferred`.
  /// `state` must have been read with `.acquire` memory ordering in order
  /// to safely see all the changes from the thread that last enqueued a `Waiter`.

  private func waiterQueue(from state: Int) -> UnsafeMutablePointer<Waiter<Value>>?
  {
