I believe a motivation for the platform not allowing DML before a web service callout is to avoid a long-lived transaction (as the callout is allowed to wait up to 10 seconds for its response).
I have a query that I want to use a "for update" locking statement in to ensure some processing is only done once. But immediately following that query I want to make a web service callout. It occurs to me that this may also be disallowed by the platform (locking requiring a transaction?) or be potentially problematic but I haven't found any documentation on the subject.
Can a web service callout be made in code that has a "for update" lock applied?