I'm curious now, why does giving it an array work, when headers is declared as "mapping(string:string) headers;"?
Due to lack of #pragma strict_types. :-P Since the value which is assigned to it has type mapping(string:string|array(string)), it _might_ be the case that all the values are strings, so the assignment is allowed in non-strict mode.