An async method can use await within it. A method can return a future but not be able to use the await keyword.
For example:
return 4;
If the function is marked async, the return value should be Future<int>.If you allow a non-async method use await, you get into this situation:
Future<int> foo(){
int result = await something ();
// How to return "result" and still make compiler happy?
}It sounds like the async keyword allows for a particular implicit type conversion within the function body, but on return statements only. That's a pretty thin justification for a keyword.