Wait, maybe I did find a nit to pick ;-)

If the RP specifies an invalid background color, validateBackgroundColor will throw here. What's catching that error? What happens to the underlying page if we bail on execution right here--should we actually return a falsy backgroundColor if validation fails, and console.log the error instead?