Executes the use case with the given input.
input
Completes when the action finishes. Failures surface as errors of the returned future; this contract does not use Either.
Future<void> run(INPUT input);