Rather than execute being a Future<void>, it should expose the Result. This allows developers to react to success/error imperatively.