Promise pattern for c#