title: CoroutineScope extension function in a different class
body: <p>I'm trying to use an extension function to <code>CoroutineScope</code> to launch some asynchronous work.
  I'm not sure how to call this method from my main class, see below:</p>
  
  <pre class="lang-kotlin prettyprint-override"><code>class MyService {
     fun CoroutineScope.getFoo() = async(IO|Single|Default) { ... }
  }
  
  class MyProgram(val service : MyService) : CoroutineScope {
     fun main() {
        launch {
           // Doesn't work, unresloved `service.getFoo`.
           val deferred = service.getFoo() getFoo
  
           // Works, but looks a bit odd IMO.
           val deferred = with(service) { getFoo() }
  
           deferred.await()
        }  
     }
  }
  </code></pre>
  
  <p>I know I could just move the <code>async {}</code> keyword to my main method, but in this way, the caller would have to decide the scheduler.
  The service knows the nature of its work (IO/Computation bound single-threaded?, etc) and I think it should be the one deciding the scheduler.</p>