throw or return new Future.error()?