feat(service): use a simple map internally avoiding callbacks issues

This removes the internal usage of `map[function(){}]` which is not recommended. Map's keys could/should be stringified with `toString()` (so i.e. `[object object]` or `function(…){…}`).

Resolves #23