I know this is quite an open ended question and I apologize.
I can see that Await.ready returns Awaitable.type while Await.result
They both block until the future completes, the difference is just their return type.
The difference is useful when your Future throws exceptions:
def a = Future { Thread.sleep(2000); 100 }
def b = Future { Thread.sleep(2000); throw new NullPointerException }
Await.ready(a, Duration.Inf) // Future(Success(100))
Await.ready(b, Duration.Inf) // Future(Failure(java.lang.NullPointerException))
Await.result(a, Duration.Inf) // 100
Await.result(b, Duration.Inf) // crash with java.lang.NullPointerException