def tpc_vote(transaction):
    """Provide a storage with an opportunity to veto a transaction

        The argument is the same object passed to tpc_begin.

        This call raises a StorageTransactionError if the storage
        isn't participating in two-phase commit or if it is commiting
        a different transaction.

        If a transaction can be committed by a storage, then the
        method should return.  If a transaction cannot be committed,
        then an exception should be raised.  If this method returns
        without an error, then there must not be an error if
        tpc_finish or tpc_abort is called subsequently.

        The return value can be None or a sequence of a sequence of object ids,
        as described in IMultiCommitStorage.tpc_vote.
        """
