It's the parser
Groovy sees
request = http GET to "${url}" with headers, [ 'Cookie': 'monster' ]
As
request = http( GET ).to( "${url}" ).with( headers, [ 'Cookie': 'monster' ] )
Which as you have seen is fine, but when it tries to parse
request with headers, [ 'Cookie': 'monster' ]
Is seen as
request( with headers, [ 'Cookie': 'monster' ] )
So with becomes a parameter and then you're missing a comma and it causes your problem. Basically the parser gets lost