UniRx or StartCoroutine in JobSystem?

Does anybody know how to implement a StartCoroutine within a Job System?
I have this code:

[BurstCompile]
    struct TestJob : IJob
    {
        public void Execute()
        {
            Debug.Log("Hello world");
            Observable.Start(() =>
            {
                System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
                Debug.Log("end");
            });
        }
    }

In the console, I get this error:

List<(System.Action procedure,float time)> _actions = new List<(System.Action,float)>();

for( int i=_actions.Count-1 ; i!=-1 ; i-- )
    if( Time.time > _actions*.time )*

{
_actions*.procedure();
actions.RemoveAt(i);
_
}*

When porting MonoBehaviour code into the domain of IJob and Burst’s fabled performance gains, the very first thing you don’t want to do is to rewrite this:

MyScript : MonoBehaviour
{
    IEnumerator SomethingHappened ()
    {
        if( IsSomethingTrue() )
        {
            CostlyMethodCall1();
            yield new WaitForSeconds();
            CostlyMethodCall2();
        }
    }
}

_
Into this (it’s super wrong…):

[BurstCompile]
MyJob : IJob
{
    void Execute ()
    {
        if( IsSomethingTrue() )
        {
            CostlyMethodCall1();
            yield new WaitForSeconds();
            CostlyMethodCall2();
        }
        /* else */
    }
}

_
But into something structured more like this:

MyScript : MonoBehaviour
{
    IEnumerator SomethingHappened ()
    {
        if( IsSomethingTrue() )
        {
            var job1 = new CostlyJob1{
                data = someData
            };
            JobHandle jobHandle1 = job1.Schedule();

            yield new WaitForSeconds( 1 );
            jobHandle1.Complete();
            DoSomethingWithCalculationResults1( job1.data );

            var job2 = new CostlyJob2{
                data = someMaybeOtherData
            };
            JobHandle jobHandle2 = job2.Schedule();

            yield new WaitForSeconds( 1 );
            jobHandle2.Complete();
            DoSomethingWithCalculationResults2( job2.data );
        }
        /* else */
    }
}

[BurstCompile]
CostlyJob1 : IJob
{
    public NativeArray<float> data;
    void Execute ()
    {
        /* code to process job data*/
    }
}

[BurstCompile]
CostlyJob2 : IJob
{
    public NativeArray<float> data;
    void Execute ()
    {
        /* code to process job data*/
    }
}

_
This way you can still use Burst+IJob alongside Coroutines and any ThrottleMyFramerateRx just fine.
_