Just to reflect on my code: payload is a lazy val, so will it throw exceptions? Should it be a def instead? It is used in at most one codepath.