My mistake... In my test case I forgot to trigger the code that actually uses startActivityForResult. I corrected that and as expected this caused onActivityResult to be called. Allowing me to test onActivityResult with various values of requestCode.
One tip- remember that the second parameter (the timeout) for waitForMonitorWithTimeout is in milliseconds not seconds as the documentation suggests.