 // Promise
 public class Promise<T> {
     
-    public let future = Future<T>()
+    public let future : Future<T>
     
     public var completed : Bool {
         return self.future.completed
     }
     
     public init() {
-    }
-    
+        self.future = Future<T>()
+    }
+
+    public init(queue:Queue) {
+        self.future = Future<T>(queue:queue)
+    }
+
     public func completeWith(future:Future<T>) {
         self.completeWith(self.future.defaultExecutionContext, future:future)
     }

    }
    
    public func onComplete(executionContext:ExecutionContext, complete:Try<T> -> Void) {
        Queue.simpleFutureStreams.sync {
            let futureComplete : InFuture = {future in
                future.onComplete(executionContext, complete:complete)
            }

        self.future = FutureStream<T>(capacity:capacity)
    }
    
    public init(queue:Queue, capacity:Int?=nil) {
        self.future = FutureStream<T>(queue:queue, capacity:capacity)
    }
    
    public func complete(result:Try<T>) {
        self.future.complete(result)
    }
