onBackgroundData not called from when Background.exit is called from makeWebRequest callback

Hi, I am working on a background web request for a watch face.  I have read various discussions here on this but nothing that solves my issue.

I include full test code simplified as far as possible (it's only 90 lines) - when the temporal event is fired in the simulator the web request is made and successfully returns a result.  When Background.exit is then called, onBackgroundData is not called.

I thought it easier to show the full code rather than explaining further what I do and don't do.  As a test line 74 can be uncommented (this does fire onBackgroundData, but without the web request result so is useless) I am using VSCode.

Thanks for any insights anyone may have...

Full file litdev.uk/stuff/bgwfApp.mc - can't update in this slightly weird forum.

MonkeyC.txt
using Toybox.Application as App;
using Toybox.Background;
using Toybox.System as Sys;
using Toybox.WatchUi as Ui;
using Toybox.Graphics as Gfx;
using Toybox.PersistedContent;
using Toybox.Lang as Lang;

var inBackground = false;
var _myResult = -1;

(:background)
class bgwfApp extends App.AppBase {
  function initialize() {
    AppBase.initialize();
  }

  // onStart() is called on application start up
  function onStart(state) {
    Sys.println("onStart");
  }

  // onStop() is called when your application is exiting
  function onStop(state) {
    if (!inBackground) {
      Sys.println("onStop !inBackground");
    } else {
      Sys.println("onStop");
    }
  }

  // Return the initial view of your application here
  function getInitialView() {
    Sys.println("getInitialView");
    if (Toybox.System has :ServiceDelegate) {
      Background.registerForTemporalEvent(new Time.Duration(5 * 60));
    } else {
      Sys.println("****background not available on this device****");
    }
    return [new bgwfView()];
  }

  function onBackgroundData(data) {
    Sys.println("onBackgroundData=" + data);
    _myResult = data;
    Ui.requestUpdate();
  }

  function getServiceDelegate() {
    Sys.println("getServiceDelegate");
    return [new BgbgServiceDelegate()];
  }

  function onAppInstall() {
    Sys.println("onAppInstall");
  }

  function onAppUpdate() {
    Sys.println("onAppUpdate");
  }
}

(:background)
class BgbgServiceDelegate extends Toybox.System.ServiceDelegate {
  function initialize() {
    Sys.ServiceDelegate.initialize();
    inBackground = true; //trick for onExit()
  }

  function onTemporalEvent() {
    getMyData();
    Sys.println("onTemporalEvent");
    _myResult = 0;
    //Background.exit(_myResult); // This fires onBackgroundData, but obviously doesn't do the web request!
  }

  private function getMyData() as Void {
    var options = {
      :responseType => Communications.HTTP_RESPONSE_CONTENT_TYPE_JSON,
      :headers => {
        "Content-Type" => Communications.REQUEST_CONTENT_TYPE_URL_ENCODED,
      },
    };
    Communications.makeWebRequest(
      "https://jsonplaceholder.typicode.com/todos/115",
      null,
      options,
      method(:onReceive)
    );
  }