StepOut from return position of async function.

Running test: testStepInto
      p.then(() => 1);
      #debugger;
      return p;

      debugger;
      #return p;
    }

      return p;
    #}
    await foo();

      await p;
      p.then(() => #1);
      debugger;


Running test: testStepOver
      p.then(() => 1);
      #debugger;
      return p;

      debugger;
      #return p;
    }

      return p;
    #}
    await foo();

      await p;
      p.then(() => #1);
      debugger;

      await p;
      p.then(() => 1#);
      debugger;

    await foo();
  #}



Running test: testStepOut
      p.then(() => 1);
      #debugger;
      return p;

      debugger;
      #return p;
    }

      return p;
    #}
    await foo();

      await p;
      p.then(() => #1);
      debugger;

    await foo();
  #}


