What you're asking for is the default behavior - unless you imagine async/ await- so remove asyncand use Task.Delay(3000).Wait().
Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(t =>
{
Console.WriteLine(t.ToString());
Task.Delay(3000).Wait();
});
, - async.
Observable.Interval(TimeSpan.FromSeconds(1)) - () .
, , .