     
     can only be used to a create a Future that should always succeed.
     */
-    public init(_ executor : Executor = .Immediate, block: () throws -> T) {
-        let block = executor.callbackBlockFor { () -> Void in
+    public init(_ executor : Executor = .Immediate , block: () throws -> T) {
+        let wrappedBlock = executor.callbackBlockFor { () -> Void in
             do {
                 let r = try block()
                 self.completeWith(.Success(r))

class classWithMethodsThatReturnFutures {
    
    func iReturnAnInt() -> Future<Int> {
        return Future (.Immediate) { () -> Int in
            return 5
        }

    
    the block can return a value of .CompleteUsing(Future<T>) if it wants this Future to complete with the results of another future.
    */
    public init<C:CompletionType where C.T == T>(_ executor : Executor  = .Immediate, block: () throws -> C) {
        executor.execute { () -> Void in
            self.completeWithBlocks(completionBlock: {
                return try block()
            })
        }
    }
    public init<C:CompletionType where C.T == T>(_ executor : Executor  = .Immediate, @autoclosure(escaping)  block: () -> C) {
        executor.execute { () -> Void in
            self.completeWith(block())
        }
    }

