   // Test: FutureTests.testMakeFutureOfBlock_Failure
   let promise = Promise<T>()
   executor.execute { [weak promise] in
-    guard let promise = promise else { return }
-    promise.complete(with: fallible(block: block))
+    guard nil != promise else { return }
+    let value = fallible(block: block)
+    promise?.complete(with: value)
   }
   return promise
 }

  }

  executor.execute(after: timeout) { [weak promise] in
    guard let promise = promise else { return }

    if cancellationToken?.isCancelled ?? false {
      promise.cancel()
    } else {
      let completion = fallible(block: block)
      promise.complete(with: completion)
    }
  }
  return promise

  }

  executor.execute(after: timeout) { [weak promise] in
    guard nil != promise else { return }
    if cancellationToken?.isCancelled ?? false {
      promise?.cancel()
    } else {
      do {
        let futureResult = try block()
        promise?.complete(with: futureResult)
      }
      catch {
        promise?.fail(with: error)
      }
    }
  }
  return promise
