title: Vertx plus Kotlin coroutines hangs forever
body: <p>I am rewriting some Java Vertx asynch code using Kotlin coroutines for learning purposes. However, when I try to test a simple HTTP call, the coroutine based test hangs forever and I really don't understand where is the issue. Here a reproducer:</p>
  
  <pre><code>@RunWith(VertxUnitRunner::class)
  class HelloWorldTest {
  
      private val vertx: Vertx = Vertx.vertx()
  
      @Before
      fun setUp(context: TestContext) {
          // HelloWorldVerticle is a simple http server that replies "Hello, World!" to whatever call
          vertx.deployVerticle(HelloWorldVerticle::class.java!!.getName(), context.asyncAssertSuccess())
      }
  
      // ORIGINAL ASYNC TEST HERE. IT WORKS AS EXPECTED
      @Test
      fun testAsync(context: TestContext) {
          val atc = context.async()
          vertx.createHttpClient().getNow(8080, "localhost", "/") { response -&gt;
              response.handler { body -&gt;
                  context.assertTrue(body.toString().equals("Hello, World!"))
                  atc.complete()
              }
          }
      }
  
      // First attempt, it hangs forever, the response is never called
      @Test
      fun testSync1(context: TestContext) = runBlocking&lt;Unit&gt; {
          val atc = context.async()
          val body = await&lt;HttpClientResponse&gt; {
              vertx.createHttpClient().getNow(8080, "localhost", "/", { response -&gt; response.handler {it}} )
          }
          context.assertTrue(body.toString().equals("Hello, World!"))
          atc.complete()
      }
  
      // Second attempt, it hangs forever, the response is never called
      @Test
      fun testSync2(context: TestContext) = runBlocking&lt;Unit&gt; {
          val atc = context.async()
          val response = await&lt;HttpClientResponse&gt; {
                  vertx.createHttpClient().getNow(8080, "localhost", "/", it )
          }
          response.handler { body -&gt;
              context.assertTrue(body.toString().equals("Hello, World!"))
              atc.complete()
          }
      }
  
      suspend fun &lt;T&gt; await(callback: (Handler&lt;T&gt;) -&gt; Unit) =
              suspendCoroutine&lt;T&gt; { cont -&gt;
                  callback(Handler { result: T -&gt;
                      cont.resume(result)
                  })
              }
  }
  </code></pre>
  
  <p>Is everyone able to figure out the issue?</p>