> In general we however try to make behaviour of the service operations as dependable as possible and that includes that users should be able to expects synchronous reloads.
Having suffered a lot from it in various cases I think I understand the "fire-and-forget" programming problem with SIGHUP reloads. BTW, even some "start" commands are asynchronous by default. This is an incredible bad idea: it is trivial to make a synchronous command asynchronous (&) as a speed hack, while extremely hard to check for completion of a dependency that escapes by making itself asynchronous.
However asynchronous commands are usually not a problem for end-users. Human end-users are quite different from programs: they more often than not know how much time the command will take, are able to poll intelligently, know how to verify whether the service has actually been reloaded,... so removing the whole feature just because it cannot be made synchronous would sound a bit harsh.
I do not know about systemd (yet...), but other init systems could probably make more difference between their programming versus user interfaces. Something like: "SIGUP commands are only for end-users, do not use in scripts". I have no idea how this could be achieved though.