Readable
=========
#1 start
#1 stdout: to stdout
#1 stdout: to stdout again
#1 stderr: to stderr
#1 data: {"message": 0}
#1 data: {"message": 1}
#1 data: {"message": 2}
#1 data: {"message": 3}
#1 data: {"message": 4}
#1 data.format_error: {"line": "gargle gargle\n", "type": "JSONDecodeError", "message": "Expecting value: line 1 column 1 (char 0)"}
#1 end

Raw
=========
{"event": "start", "data": {"command": ["python", "datafd.py"], "time": "X"}, "pipe": null, "index": 1}
{"event": "line", "data": "to stdout\n", "pipe": "stdout", "index": 1}
{"event": "line", "data": "to stdout again\n", "pipe": "stdout", "index": 1}
{"event": "line", "data": "to stderr\n", "pipe": "stderr", "index": 1}
{"event": "data", "data": {"message": 0}, "pipe": "data", "index": 1}
{"event": "data", "data": {"message": 1}, "pipe": "data", "index": 1}
{"event": "data", "data": {"message": 2}, "pipe": "data", "index": 1}
{"event": "data", "data": {"message": 3}, "pipe": "data", "index": 1}
{"event": "data", "data": {"message": 4}, "pipe": "data", "index": 1}
{"event": "format_error", "data": {"line": "gargle gargle\n", "type": "JSONDecodeError", "message": "Expecting value: line 1 column 1 (char 0)"}, "pipe": "data", "index": 1}
{"event": "end", "data": {"command": ["python", "datafd.py"], "time": "X", "return_code": 0}, "pipe": null, "index": 1}
