The current EME spec specifies that the first step should be to check if the CDM supports server certificates. If it doesn't, return a promise resolved with false. This is followed by a step to check that a certificate is supplied, which returns an error if there is none. This is done to allow applications to have chained promises that would work together regardless of which CDM is actually used (see [2]).
Currently only the CDM knows if it supports server certificates. However, passing a zero-length buffer is not supported (causes an error to be returned). MediaKeys needs some way to determine if the CDM can handle server certificates or not.
[1] http://w3c.github.io/encrypted-media/#dom-mediakeys-setservercertificate
[2] https://github.com/w3c/encrypted-media/issues/145