in membership-common/src/main/scala/com/gu/memsub/subsv2/reads/CommonReads.scala [21:28]
override def point[A](a: => A): JsResult[A] = JsSuccess(a)
override def ap[A, B](fa: => JsResult[A])(f: => JsResult[(A) => B]): JsResult[B] = (fa, f) match {
case (JsSuccess(a, _), JsSuccess(func, _)) => JsSuccess(func(a))
case (err1 @ JsError(_), err2 @ JsError(_)) => err1 ++ err2
case (err @ JsError(_), _) => err
case (_, err @ JsError(_)) => err
}