private static Mono<Void> deleteRoutes( final CloudFoundryClient cloudFoundryClient, Optional<List<Route>> routes) { return routes .map( new Function<List<Route>, Stream<Route>>() { @Override public Stream<Route> apply(List<Route> routes) { return Stream.fromIterable(routes); } }) .orElse(Stream.<Route>empty()) .map( new Function<Route, String>() { @Override public String apply(Route route) { return route.getId(); } }) .flatMap( new Function<String, Mono<Void>>() { @Override public Mono<Void> apply(String routeId) { return requestDeleteRoute(cloudFoundryClient, routeId); } }) .after(); }