One way to catch that issue I mentioned (around the asynchronous call) is to add a test.  In this case it would be something like:  mock > 0 unmet requirements, and verify it does not call synapseClient.createSubmission().  Then mock 0 unmet requirements, and verify that it does call synapseClient.createSubmission().