On further digging, in order to copy the message headers from the original message it'd be necessary for the Go implementation of InjectMessage to deserialize from protobuf, copy the message headers, and then reserialize to protobuf. This isn't worth the performance hit, so we're going to leave the behavior as is, if users want to populate the message headers they can do so by hand in the Lua code.