Follow these general principles to provide convenience and clearness for users.
purpose focused. It`s better to create several components with clear properties for specific tasks than one general multitask component with confusing options;
simple to use. Provide clear naming, sufficient help explanations, avoid complexity;
prepared. The component must adequately handle all types of message properties data - boolean, number, string, buffer, object, array, or null;
predictable. Document and make the component to provide documented doings with message properties - the result must comply with the promises;
controlled. The component must catch errors or register error handlers for any asynchronous calls it makes, wherever possible.