uses Future.onComplete. This doesn't handles failures.
Future.compose should be used for proper failure handling. This also avoid the 17 levels of indentation that makes the code hard to read and understand.
All failure handling should be combined and handled at the end using a single .onFailure call. This avoid duplicate code.