I saw some articles about designing a custom awaitable type:
http://books.google.com.br/books?id=1On1glEbTfIC&pg=PA83&lpg=PA83&dq=create+a+custom+awaitab
You can supply your own implementation of GetAwaiter via an extension method if one does not exist.
http://blogs.msdn.com/b/pfxteam/archive/2011/01/13/10115642.aspx