Now that this has become clear I think it is another candidate to be pushed down into the `layer` object, but I'm not sure how well it would play with the `else` clause, or whether the `layer` should know about making metadata requests?