See #528 for some history here.
The issue is that requests made using foo instead of s~foo fail in strange ways.
So as a result we have to use datastore.helpers._prepare_key_for_request to strip dataset IDs from keys that get sent to the server. This has accidental caused bugs in the past (e.g. allowing keys from a different dataset bar to be inserted into dataset foo)