The docstring I wrote does say it returns a synchronous None, so I think it's already consistent, but maybe I'm missing something else.

The reason I made it return None synchronously is to support maybe_execute_scaling_policy in a backwards-compatible way. That function raises an exception synchronously if the policy is not to be executed, and so I needed a way to let the caller know synchronously that nothing is changing. Returning a Deferred would prevent that from being possible (or at least require it to involve a nasty hack).