         channel.request("lucy", "woof", "chaseSquirrels"){
             (value: String) in
             XCTAssert(value == "woof:chaseSquirrels")
+            done.fulfill()
         }
+
+        waitForExpectations(timeout: 1, handler: nil)
 
     }
 
     func testDoesNotReplyToArgumentCountMismatch(){
+        let done = expectation(description: "done")
         let channel = Channel(label: "test")
 
-        channel.reply("lucy"){ (v1: String, v2: String) -> String in
+        channel.reply("lucy"){
+            (v1: String, v2: String) -> String in
             return "\(v1):\(v2)"
         }
 

        channel.request("lucy"){
            (value: String) in
            XCTAssert(value == "woof")
        }
    }

    func test1ArgRequest(){
        let channel = Channel(label: "test")

        channel.reply("lucy"){ (v1: String) -> String in

        channel.request("lucy", "woof"){
            (value: String) in
            XCTAssert(value == "woof")
            done.fulfill()
        }

        waitForExpectations(timeout: 1, handler: nil)

    }

    func test2ArgRequest(){
        let done = expectation(description: "done")
        let channel = Channel(label: "test")

        channel.reply("lucy"){ (v1: String, v2: String) -> String in
